{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "tool": {
    "slug": "dreamlit",
    "name": "Dreamlit",
    "vendor": "Notika AI",
    "vendorUrl": "https://dreamlit.ai",
    "kind": "mcp",
    "category": "lifecycle-marketing",
    "summary": "Dreamlit is a lifecycle email service that runs notification workflows from a connected Supabase or Postgres database. AI agents build, test and publish those workflows and read their analytics through a hosted MCP server.",
    "url": "https://www.anchorterminal.com/tools/dreamlit",
    "markdownUrl": "https://www.anchorterminal.com/tools/dreamlit.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/dreamlit.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/dreamlit.json",
    "dns": "dreamlit.grade.anchorterminal.com",
    "repo": "https://github.com/dreamlit-ai/dreamlit-mcp",
    "transports": [
      "streamable-http"
    ],
    "remoteUrl": "https://mcp.dreamlit.ai/mcp",
    "packages": [],
    "auth": "oauth",
    "authNotes": "OAuth from the MCP client to one Dreamlit workspace, with scopes `workflows:read`, `workflows:write`, `workflows:publish` and `analytics:read`. Clients that can't do OAuth use a project-scoped personal access token (`dlpt_`) with chosen scopes, shown once, sent as a Bearer header. Accounts and database connections are set up in the web app first.",
    "pricing": "paid",
    "pricingNotes": "Pro $20 a month ($16 billed yearly) with 30,000 emails and 250 agent credits; Scale $99 ($79 yearly) with 100,000 emails; Enterprise custom. No free plan for new accounts. MCP calls carry no extra charge. Autopilot, a done-for-you service, is priced separately.",
    "priceSummary": "$20 / mo",
    "where": "hosted",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in llms.txt, pricing.md or the MCP docs (checked 2026-11-06).",
      "endpoints": []
    },
    "toolCount": 16,
    "popularity": {
      "githubStars": null,
      "npmWeekly": null,
      "pypiWeekly": null,
      "asOf": "2026-11-06"
    },
    "docsUrl": "https://dreamlit.ai/docs/resources/mcp-server",
    "mcpTools": {
      "url": "https://mcp.dreamlit.ai/mcp",
      "checkedAt": "2026-11-07T01:43:51.385315264Z",
      "status": "ok",
      "protocol": "2025-11-25",
      "tools": [
        {
          "name": "get_status",
          "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. Workflow summaries include liveStatus, and broadcasts include an authoritative broadcast.state. Database tables that Dreamlit can see but not read rows from (row level security with no policy for Dreamlit) carry a warning and fixSql; run fixSql, or ask the user to run it, in the Supabase SQL editor. If Dreamlit couldn't read a connection's tables, that connection has tablesError instead of an empty list meaning no tables. Do not use this to create, update, publish, or unpublish workflows.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "projectId": {
                "description": "Optional project id. Include it to return project setup, schema hints, and authoring context.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "type": "string"
              },
              "workflowId": {
                "description": "Optional workflow id. Include it to return concise workflow state and preview URL.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "type": "string"
              }
            },
            "type": "object"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get status"
          }
        },
        {
          "name": "create_or_update_workflow",
          "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, then describe the steps to change by what they do, not by step id. Each call continues the workflow's current chat; pass startNewChat to start fresh. Broadcasts that are scheduled, sent, or cancelled can't be edited; duplicate them in the Dreamlit web app instead. Existing Supabase Auth workflows can be edited except for the immutable trigger step; creating Supabase Auth workflows must happen through Supabase Auth email setup in the Dreamlit web app. Side effect: may create or modify a draft, but does not publish or install live triggers. Returns the workflow/draft result, action-required or handoff details when more input is needed, and relevant app URLs. Do not use for publishing, direct database changes, or low-level graph edits.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "name": {
                "description": "Name for a new workflow draft. Use when the user names the workflow; otherwise Dreamlit picks one. Only valid when creating; use rename_workflow to rename an existing workflow.",
                "type": "string"
              },
              "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. When editing, refer to existing steps by what they do (for example, the query that finds returning customers, or the email with subject \"Welcome back\"), never by step id. 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"
              },
              "startNewChat": {
                "description": "Start a fresh Dreamlit chat for this request instead of continuing the workflow's current chat. The new chat still sees the current draft but not earlier turns. Use when switching to an unrelated change, after long turns with pasted SQL or HTML, or when Dreamlit keeps misreading the request. Ignored when creating a workflow.",
                "type": "boolean"
              },
              "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"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": true,
            "readOnlyHint": false,
            "title": "Create or update workflow"
          }
        },
        {
          "name": "edit_workflow_steps",
          "title": "Edit workflow steps",
          "description": "Applies up to 5 exact edits to existing steps in a workflow draft, instantly and without AI: email subject, preview text, HTML, sender, reply-to, and recipient; Slack message; query SQL; wait rule; and step description. Use when you know the exact new value; call get_workflow_and_preview_url first for step ids and current values, with includeEmailHtml to edit HTML. Edits are checked against the draft as it will be once they are all saved: templates and waits may only use fields their step gets, and query edits are rejected if later steps still use fields the new query no longer returns. Each edit applies on its own, except that a SQL edit and the edits below it apply together or not at all. The edits show in the workflow's Dreamlit chat. Side effect: changes the draft only; does not publish. Returns each edit's status with an error code and message for failed edits, and app URLs. Do not use to add, remove, or move steps, edit triggers, or make changes that need writing or judgment; use create_or_update_workflow for those.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "edits": {
                "description": "Up to 5 edits, each to a different existing step. Fields must match the step type: email* fields for email steps, slackTemplate for Slack, queryText for queries, wait for waits.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "description": {
                      "description": "Step description for email, query, or Slack steps. Empty string clears it.",
                      "type": "string"
                    },
                    "emailFromAddress": {
                      "description": "Sender address on one of the project's sending domains.",
                      "minLength": 1,
                      "type": "string"
                    },
                    "emailFromName": {
                      "description": "Sender name. Empty string clears it.",
                      "type": "string"
                    },
                    "emailHtml": {
                      "description": "Full replacement email HTML body. Liquid allowed. Read the current body with get_workflow_and_preview_url includeEmailHtml first. Emails that allow unsubscribe must keep a link to {{ dreamlit_unsubscribe_url }}.",
                      "minLength": 1,
                      "type": "string"
                    },
                    "emailPreviewText": {
                      "description": "Email preview text. Liquid allowed. Empty string clears it.",
                      "type": "string"
                    },
                    "emailReplyTo": {
                      "description": "Reply-to address. Empty string clears it.",
                      "type": "string"
                    },
                    "emailSubject": {
                      "description": "Email subject. Liquid allowed.",
                      "minLength": 1,
                      "type": "string"
                    },
                    "emailTo": {
                      "description": "Recipient address or Liquid, such as {{ email }}.",
                      "minLength": 1,
                      "type": "string"
                    },
                    "queryText": {
                      "description": "Full replacement SQL for a query step. Must stay read-only and keep returning the fields later steps use.",
                      "minLength": 1,
                      "type": "string"
                    },
                    "slackTemplate": {
                      "description": "Full replacement Slack message. Liquid allowed.",
                      "minLength": 1,
                      "type": "string"
                    },
                    "stepId": {
                      "description": "Existing step id from get_workflow_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"
                    },
                    "wait": {
                      "description": "Replaces the whole wait rule: a fixed duration, or until the date and time in a row field.",
                      "oneOf": [
                        {
                          "properties": {
                            "amount": {
                              "description": "How long to wait, up to 365 days in total.",
                              "exclusiveMinimum": 0,
                              "maximum": 9007199254740991,
                              "type": "integer"
                            },
                            "kind": {
                              "const": "duration",
                              "type": "string"
                            },
                            "unit": {
                              "enum": [
                                "minutes",
                                "hours",
                                "days"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "amount",
                            "unit"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "field": {
                              "description": "Field from the step's input rows that holds a date and time with an offset, such as renewal_reminder_at. The wait ends at that time.",
                              "minLength": 1,
                              "type": "string"
                            },
                            "kind": {
                              "const": "until_row_field",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "field"
                          ],
                          "type": "object"
                        }
                      ]
                    }
                  },
                  "required": [
                    "stepId"
                  ],
                  "type": "object"
                },
                "maxItems": 5,
                "minItems": 1,
                "type": "array"
              },
              "workflowId": {
                "description": "Workflow whose draft to edit.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{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",
              "edits"
            ],
            "type": "object"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": false,
            "readOnlyHint": false,
            "title": "Edit workflow steps"
          }
        },
        {
          "name": "rename_workflow",
          "title": "Rename workflow",
          "description": "Use when the user asks to rename an existing Dreamlit workflow. Side effect: changes only the workflow name; the draft, published version, and live triggers are unchanged. Returns the updated name and app URLs. Do not use to edit workflow content or to name a new workflow; pass name to create_or_update_workflow instead.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "name": {
                "description": "New workflow name. Leading and trailing spaces are removed; it can't be blank.",
                "type": "string"
              },
              "workflowId": {
                "description": "Workflow id to rename.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{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",
              "name"
            ],
            "type": "object"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": false,
            "title": "Rename workflow"
          }
        },
        {
          "name": "move_workflow_to_folder",
          "title": "Move workflow to folder",
          "description": "Use when the user asks to put a workflow or broadcast in a folder, move it to another folder, or take it out of a folder. Folders are per list: the Published and Drafts lists on the Workflows page and the Sent and Drafts lists on the Broadcasts page each have their own folders, and this moves the workflow within the list it shows in now. Folders are flat; a \"/\" is just part of the name. A draft's folder does not carry over when it is published. Side effect: may create the folder; never deletes folders and does not change the draft, published version, or live triggers. Returns the folder, the list, and app URLs. Do not use to rename or delete folders.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "folder": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Folder name, up to 64 characters. Matching ignores case and leading or trailing spaces; Dreamlit creates the folder if it doesn't exist yet. Pass null to take the workflow out of its folder."
              },
              "workflowId": {
                "description": "Workflow id to move.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{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",
              "folder"
            ],
            "type": "object"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": false,
            "title": "Move workflow to folder"
          }
        },
        {
          "name": "list_projects",
          "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.",
          "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"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "List projects"
          }
        },
        {
          "name": "list_workflows",
          "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, liveStatus, trigger type, folder (the folder name in the list the workflow shows in, or null), workflow URLs, totalCount, hasMore, and nextOffset. Broadcasts also include a broadcast object with state (draft, scheduled, sending, sent, cancelled, or failed), scheduledFor, and cancelledAt or completedAt; for broadcasts, broadcast.state and liveStatus are authoritative over published, because a cancelled broadcast stays published but will not send. Do not use as the final source of truth before editing; call get_workflow_and_preview_url for full structure.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "limit": {
                "default": 80,
                "description": "Maximum number of workflows to return for this page.",
                "maximum": 100,
                "minimum": 1,
                "type": "integer"
              },
              "offset": {
                "default": 0,
                "description": "Zero-based workflow offset for pagination. Use nextOffset from the previous response to fetch the next page.",
                "maximum": 9007199254740991,
                "minimum": 0,
                "type": "integer"
              },
              "projectId": {
                "description": "Project id to list workflows from. Required when access is ambiguous.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "type": "string"
              },
              "search": {
                "description": "Optional workflow name or description search string.",
                "maxLength": 200,
                "type": "string"
              },
              "triggerFilters": {
                "description": "Optional trigger type filters. Use broadcast only for one-time audience emails.",
                "items": {
                  "enum": [
                    "auth_email",
                    "database",
                    "broadcast",
                    "repeating",
                    "none"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "List workflows"
          }
        },
        {
          "name": "list_brand_styles",
          "title": "List brand styles",
          "description": "Read-only. Use when the user wants to inspect saved project brand styles for generated email drafts. Returns paginated project brand style summaries, ids, default status, style metadata, and app URLs. Do not use to create, update, delete, or expose raw style provenance.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "limit": {
                "default": 50,
                "description": "Maximum number of brand styles to return for this page.",
                "maximum": 100,
                "minimum": 1,
                "type": "integer"
              },
              "offset": {
                "default": 0,
                "description": "Zero-based brand style offset for pagination. Use nextOffset from the previous response to fetch the next page.",
                "maximum": 9007199254740991,
                "minimum": 0,
                "type": "integer"
              },
              "projectId": {
                "description": "Project id to list brand styles from. Required when access is ambiguous.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "type": "string"
              }
            },
            "type": "object"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "List brand styles"
          }
        },
        {
          "name": "get_workflow_and_preview_url",
          "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, liveStatus, the Dreamlit preview/builder URL, and status URLs. Broadcasts also include a broadcast object with state (draft, scheduled, sending, sent, cancelled, or failed), the run's scheduledFor, and cancelledAt or completedAt; this, not published or the trigger's sendAt, says whether the broadcast will send. Email HTML bodies are left out unless includeEmailHtml is true. Pass step ids only to edit_workflow_steps; when asking create_or_update_workflow for changes, describe steps by what they do. Do not use to create, update, publish, or unpublish workflows.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "includeEmailHtml": {
                "description": "Also return each email step's full HTML body as emailTemplate.html. Off by default because bodies are large; turn on before editing email HTML with edit_workflow_steps.",
                "type": "boolean"
              },
              "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"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get workflow and preview URL"
          }
        },
        {
          "name": "get_analytics",
          "title": "Get analytics",
          "description": "Read-only. Use get_analytics to query raw notification analytics: email and Slack sends and deliveries, email opens, clicks and bounces, overview metrics, per-recipient rows and 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. Use get_lifecycle_report or get_recommendations for Dreamlit's prepared analysis. Does not provide Dreamlit's lifecycle judgments or prioritized recommendations. Do not use for CSV exports, bulk dumps, workflow edits, publishing, or low-level database access.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "channel": {
                "description": "Notification channel for overview and notification analytics. Defaults to email. Recipient analytics are email-only.",
                "enum": [
                  "email",
                  "slack"
                ],
                "type": "string"
              },
              "cursor": {
                "description": "Opaque pagination cursor from a previous get_analytics response.",
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              "filters": {
                "description": "Optional analytics filters. Unsupported combinations return a clear error.",
                "properties": {
                  "engagement": {
                    "description": "Email engagement filter.",
                    "enum": [
                      "undelivered",
                      "bounced",
                      "complained",
                      "clicked",
                      "opened"
                    ],
                    "type": "string"
                  },
                  "notificationStatuses": {
                    "description": "Email notification lifecycle statuses to include.",
                    "items": {
                      "enum": [
                        "sent",
                        "pending",
                        "releasable",
                        "failed",
                        "canceled",
                        "suppressed",
                        "opted_out"
                      ],
                      "type": "string"
                    },
                    "maxItems": 7,
                    "type": "array"
                  },
                  "recipient": {
                    "description": "Email recipient search string.",
                    "maxLength": 320,
                    "type": "string"
                  },
                  "runStatuses": {
                    "description": "Workflow run statuses to include. Only applies to workflow_runs.",
                    "items": {
                      "enum": [
                        "RUNNING",
                        "PAUSED",
                        "COMPLETED",
                        "FAILED",
                        "SKIPPED",
                        "CANCELLED"
                      ],
                      "type": "string"
                    },
                    "maxItems": 6,
                    "type": "array"
                  },
                  "slackWebhookIds": {
                    "description": "Slack webhook ids to include for Slack notification analytics.",
                    "items": {
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "type": "string"
                    },
                    "maxItems": 100,
                    "type": "array"
                  },
                  "startedAt": {
                    "description": "Workflow run started timestamp range. Only applies to workflow_runs.",
                    "properties": {
                      "from": {
                        "description": "Inclusive ISO timestamp lower bound.",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                        "type": "string"
                      },
                      "to": {
                        "description": "Inclusive ISO timestamp upper bound.",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "topicIds": {
                    "description": "Email unsubscribe topic ids to include.",
                    "items": {
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "type": "string"
                    },
                    "maxItems": 100,
                    "type": "array"
                  },
                  "workflowIds": {
                    "description": "Workflow ids to include.",
                    "items": {
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "type": "string"
                    },
                    "maxItems": 100,
                    "type": "array"
                  },
                  "workflowRunId": {
                    "description": "Workflow run id to include for notification analytics.",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "type": "string"
                  },
                  "workflowStepRunId": {
                    "description": "Workflow step run id to include for notification analytics.",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "include": {
                "description": "Optional response sections to include. Defaults depend on the requested view.",
                "items": {
                  "enum": [
                    "summary",
                    "series",
                    "rows",
                    "recentEvents",
                    "segments"
                  ],
                  "type": "string"
                },
                "maxItems": 5,
                "type": "array"
              },
              "limit": {
                "description": "Maximum rows to return. Defaults to 25 and is capped at 100.",
                "maximum": 100,
                "minimum": 1,
                "type": "integer"
              },
              "projectId": {
                "description": "Project id to query analytics from. Required when access is ambiguous.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "type": "string"
              },
              "range": {
                "description": "Optional explicit timestamp range. Overrides window and is applied to the view's primary timestamp.",
                "properties": {
                  "from": {
                    "description": "Inclusive ISO timestamp lower bound.",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                    "type": "string"
                  },
                  "to": {
                    "description": "Inclusive ISO timestamp upper bound.",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "sort": {
                "description": "Optional row sort. Overview ignores sorting.",
                "properties": {
                  "dir": {
                    "description": "Sort direction. Defaults to desc.",
                    "enum": [
                      "asc",
                      "desc"
                    ],
                    "type": "string"
                  },
                  "field": {
                    "description": "Sort field. Valid fields depend on the requested view.",
                    "enum": [
                      "timestamp",
                      "sentTo",
                      "subject",
                      "workflow",
                      "engagement",
                      "recipient",
                      "lastSentAt",
                      "sent",
                      "opened",
                      "clicked",
                      "bounced",
                      "complained"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "field"
                ],
                "type": "object"
              },
              "timeZone": {
                "description": "IANA timezone for daily series bucketing. Defaults to UTC.",
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              "view": {
                "description": "Analytics surface to query: overview cards, notification rows, recipient rows, or workflow run rows.",
                "enum": [
                  "overview",
                  "notifications",
                  "recipients",
                  "workflow_runs"
                ],
                "type": "string"
              },
              "window": {
                "description": "Relative analytics window. Defaults to 30d. Ignored when range is provided.",
                "enum": [
                  "1h",
                  "24h",
                  "7d",
                  "14d",
                  "30d",
                  "90d",
                  "all"
                ],
                "type": "string"
              }
            },
            "required": [
              "view"
            ],
            "type": "object"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get analytics"
          }
        },
        {
          "name": "get_lifecycle_report",
          "title": "Get lifecycle report",
          "description": "Side effect: creates a preparation request when no report is ready or refresh is true and the latest report became ready more than 24 hours ago; repeat calls reuse an open request. Pass refresh: true only when the user asks for a new report; when checking on a pending report, call without refresh. Use for Dreamlit's prepared lifecycle analysis: key metrics worth tracking, the signup-to-paid funnel and where users drop off, deliverability health, and which stages (welcome, onboarding, engagement, retention, winback) have no emails yet. Available on Pro and Scale plans only. Reports are prepared by Dreamlit's agents and reviewed by our team. Returns a ready report or a processing state while Dreamlit prepares it; check back later. The requester is also emailed when ready. Does not return raw notification analytics; use get_analytics for that.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "projectId": {
                "description": "Project id. Optional when a personal token pins the project or exactly one project is available in the approved workspace.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "type": "string"
              },
              "refresh": {
                "description": "Pass refresh: true only when the user asks for a new report; when checking on a pending report, call without refresh. Reuses an open request, otherwise returns the latest report if it was ready within the last 24 hours, or requests a new one.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": false,
            "readOnlyHint": false,
            "title": "Get lifecycle report"
          }
        },
        {
          "name": "get_recommendations",
          "title": "Get recommendations",
          "description": "Side effect: creates a preparation request when no report is ready or refresh is true and the latest report became ready more than 24 hours ago; repeat calls reuse an open request. Pass refresh: true only when the user asks for a new report; when checking on a pending report, call without refresh. Use for Dreamlit's prioritized recommendations on which emails or workflows to add and what to fix or change in existing ones. Available on Pro and Scale plans only. Reports are prepared by Dreamlit's agents and reviewed by our team. Returns a ready report or a processing state while Dreamlit prepares it; check back later. The requester is also emailed when ready. Does not return raw notification analytics; use get_analytics for that.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "projectId": {
                "description": "Project id. Optional when a personal token pins the project or exactly one project is available in the approved workspace.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "type": "string"
              },
              "refresh": {
                "description": "Pass refresh: true only when the user asks for a new report; when checking on a pending report, call without refresh. Reuses an open request, otherwise returns the latest report if it was ready within the last 24 hours, or requests a new one.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": false,
            "readOnlyHint": false,
            "title": "Get recommendations"
          }
        },
        {
          "name": "send_workflow_test",
          "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. If the test has no data because row level security hides a source table's rows from Dreamlit, returns error code table_rows_hidden_by_rls with unreadableTables[].fixSql to run, or ask the user to run, in the Supabase SQL editor. Do not expose test target ids as copy; ask users to choose by message label and confirm before sending.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "confirmSend": {
                "description": "Set to true only after the user explicitly confirms sending this selected test message. If omitted or false, Dreamlit returns confirmation_required and does not send.",
                "type": "boolean"
              },
              "messageType": {
                "description": "Optional message type filter when selecting a draft message to test.",
                "enum": [
                  "email",
                  "slack"
                ],
                "type": "string"
              },
              "rowData": {
                "additionalProperties": {},
                "description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
                "propertyNames": {
                  "type": "string"
                },
                "type": "object"
              },
              "testRecipientEmail": {
                "description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
                "format": "email",
                "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
                "type": "string"
              },
              "testTargetId": {
                "description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "type": "string"
              },
              "workflowId": {
                "description": "Workflow id whose editable draft message should be tested.",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "type": "string"
              }
            },
            "required": [
              "workflowId"
            ],
            "type": "object"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": false,
            "readOnlyHint": false,
            "title": "Send workflow test"
          }
        },
        {
          "name": "prepare_publish",
          "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.",
          "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"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Prepare publish"
          }
        },
        {
          "name": "confirm_publish",
          "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.",
          "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"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "idempotentHint": false,
            "openWorldHint": false,
            "readOnlyHint": false,
            "title": "Confirm publish"
          }
        },
        {
          "name": "unpublish_workflow",
          "title": "Unpublish workflow",
          "description": "Use after explicit user intent to unpublish a Dreamlit workflow. Side effect: disables live triggers or schedules so no new runs start. Runs already in progress keep sending unless inProgressRuns is \"stop\". If the workflow has in-progress runs and inProgressRuns is omitted, returns clarification_required with the count and changes nothing: ask the user whether to stop those runs or let them finish, then call again with their choice. Returns updated workflow status, stopped run counts (allRunsStopped, remainingRunCount), and app URLs. If some runs could not be stopped, ask the user, then call again with inProgressRuns \"stop\": on an already-unpublished workflow it only stops the runs still in progress. Do not use for deleting drafts, canceling one broadcast run, or editing workflow content.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {
              "inProgressRuns": {
                "description": "What happens to runs already in progress, including runs waiting at a wait step. \"stop\" stops them so they send nothing more; \"let_finish\" lets them keep going and send. Required when the workflow has in-progress runs: ask the user, then call again with their choice. On an already-unpublished workflow, \"stop\" stops the runs still in progress.",
                "enum": [
                  "stop",
                  "let_finish"
                ],
                "type": "string"
              },
              "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"
          },
          "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"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "appUrls": {
                                "additionalProperties": false,
                                "properties": {
                                  "workflow": {
                                    "format": "uri",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "workflow"
                                ],
                                "type": "object"
                              },
                              "inProgressRunCount": {
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "unpublish_in_progress_runs",
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "options": {
                                "items": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "inProgressRuns": {
                                      "enum": [
                                        "stop",
                                        "let_finish"
                                      ],
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "recommended": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "inProgressRuns",
                                    "label",
                                    "recommended"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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"
                              },
                              "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",
                              "inProgressRunCount",
                              "options",
                              "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": {
                          "blocker": {
                            "additionalProperties": false,
                            "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                            "properties": {
                              "appliedActionCount": {
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "code": {
                                "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                "enum": [
                                  "step_needs_detail",
                                  "step_not_editable",
                                  "step_not_built",
                                  "request_unclear"
                                ],
                                "type": "string"
                              },
                              "detail": {
                                "description": "The specific missing detail or blocking rule, in plain language.",
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "database_trigger",
                                  "broadcast_trigger",
                                  "repeating_trigger",
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "code",
                              "detail",
                              "appliedActionCount"
                            ],
                            "type": "object"
                          },
                          "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": {
                      "billingUrl": {
                        "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                        "format": "uri",
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "helpUrl": {
                        "description": "Guide or support contact for resolving the problem in the message.",
                        "format": "uri",
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "resetAt": {
                        "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                        "type": "string"
                      },
                      "retryAfterSeconds": {
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "const": "error",
                        "type": "string"
                      },
                      "stepEdits": {
                        "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "changedFields": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "error": {
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                  "enum": [
                                    "step_not_found",
                                    "step_not_editable",
                                    "field_not_for_step_type",
                                    "duplicate_step",
                                    "invalid_value",
                                    "query_failed",
                                    "query_drops_used_fields",
                                    "related_edit_failed",
                                    "save_failed"
                                  ],
                                  "type": "string"
                                },
                                "fields": {
                                  "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                },
                                "message": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "type": "object"
                            },
                            "index": {
                              "description": "Position of the edit in the request.",
                              "maximum": 9007199254740991,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "applied",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "stepId": {
                              "type": "string"
                            },
                            "stepTitle": {
                              "type": "string"
                            },
                            "stepType": {
                              "enum": [
                                "query",
                                "wait",
                                "email",
                                "slack"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "stepId",
                            "status",
                            "changedFields"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "unreadableTables": {
                        "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "fixSql": {
                              "type": "string"
                            },
                            "schema": {
                              "type": "string"
                            },
                            "table": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "schema",
                            "table",
                            "fixSql"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "status",
                      "message"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "result"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "idempotentHint": false,
            "openWorldHint": false,
            "readOnlyHint": false,
            "title": "Unpublish workflow"
          }
        }
      ],
      "schemaTokens": 69715,
      "changedAt": "2026-11-07T01:43:51.385315264Z",
      "check": {
        "checker": "anchor-check/1.0",
        "totalTokens": 69715,
        "counts": {
          "error": 0,
          "note": 0,
          "warn": 18
        },
        "findings": [
          {
            "rule": "TC18",
            "severity": "warn",
            "tool": "prepare_publish",
            "message": "readOnlyHint is true but the name says \"publish\"",
            "fix": "If it changes anything, readOnlyHint must be false."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "confirm_publish",
            "message": "the definition is about 4,360 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "create_or_update_workflow",
            "message": "the definition is about 4,866 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "edit_workflow_steps",
            "message": "the definition is about 4,839 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "get_analytics",
            "message": "the definition is about 5,580 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "get_lifecycle_report",
            "message": "the definition is about 4,217 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "get_recommendations",
            "message": "the definition is about 4,188 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "get_status",
            "message": "the definition is about 4,209 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "get_workflow_and_preview_url",
            "message": "the definition is about 4,164 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "list_brand_styles",
            "message": "the definition is about 4,071 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "list_projects",
            "message": "the definition is about 3,956 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "list_workflows",
            "message": "the definition is about 4,289 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "move_workflow_to_folder",
            "message": "the definition is about 4,148 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "prepare_publish",
            "message": "the definition is about 3,999 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "rename_workflow",
            "message": "the definition is about 4,022 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "send_workflow_test",
            "message": "the definition is about 4,420 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "unpublish_workflow",
            "message": "the definition is about 4,231 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC23",
            "severity": "warn",
            "message": "16 tools, about 69,559 tokens of definitions",
            "fix": "Split the server by job, or offer a smaller default toolset (a read-only set, or a search-then-call pattern)."
          }
        ]
      }
    },
    "llmsTxt": "https://dreamlit.ai/llms.txt",
    "registryName": "ai.dreamlit/mcp",
    "capabilities": [
      "marketing.journeys",
      "marketing.campaigns",
      "marketing.events",
      "email.send",
      "email.templates",
      "email.analytics"
    ],
    "tags": [
      "hosted",
      "closed-source",
      "mcp",
      "remote-mcp",
      "mcp-registry",
      "oauth",
      "llms-txt",
      "approvals",
      "status-page",
      "supabase",
      "postgres"
    ],
    "lastRelease": "2026-10-12",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 57,
      "grade": "C",
      "agentReady": false,
      "rank": 809,
      "ranked": true,
      "rankOf": 1486,
      "categoryRank": 9,
      "methodology": "0.7",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 67,
        "maintenance": 80,
        "payments": 10,
        "reliability": 51,
        "schema": 59,
        "security": 74,
        "transparency": 59
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 51,
          "points": 10.2,
          "reason": "Graded with the hosted lines. A Better Stack status page at status.dreamlit.ai with 90 days of history for the Web App and the Workflow Engine, but no component for the MCP server (16 of 20). The record shows 100% for the web app and 99.992% for the workflow engine over 90 days, about ten minutes, with no written incidents (25 of 30). No rate limits found in the MCP or pricing docs (0). No 429, retry or idempotency guidance found (0). Scale includes dedicated support with an SLA and Enterprise has custom SLAs, but no published availability commitment (0). The MCP server, introduced on 5 May 2026, carries no beta label (10). Total 51.",
          "checked": "2026-11-06"
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 59,
          "points": 9.59,
          "reason": "The registry entry and the dreamlit-ai/dreamlit-mcp repository carry metadata only, so tool JSON Schemas are readable only inside a session; the docs give each tool's purpose and required scope (5 of 25). llms.txt, pricing.md and Markdown copies of docs pages (10). Tool descriptions say when to use each, such as `edit_workflow_steps` for exact edits without AI, and the publish pair's order (16 of 20). Parameter types aren't published beyond names such as `includeEmailHtml` and `startNewChat` (5 of 15). Example prompts and a troubleshooting section for each documented error state (10 of 15). A dated changelog; server version 0.1.0 in the registry (13 of 15). Total 59.",
          "checked": "2026-11-06"
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 67,
          "points": 10.89,
          "reason": "16 tools, the 11 to 30 band; tools follow the granted scopes, so a read-only grant sees fewer (20 of 25). Analytics take filters, sorting and pagination, and brand styles paginate (18 of 20). The docs describe the errors an agent will meet, such as authorization required, choose a project and browser hand-off, without codes (12 of 20). Publishing is prepare then confirm, and tests don't publish; no idempotency or annotations documented (10 of 20). Empty scope requests default to the v1 scopes and `get_status` gives a first call; no SDK or REST route (7 of 15). Total 67.",
          "checked": "2026-11-06"
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 74,
          "points": 12.95,
          "reason": "OAuth to one workspace with four scopes, and project-scoped personal access tokens with chosen scopes, shown once (30). A read-only grant is possible, publishing needs its own scope, `confirm_publish` runs only after the user approves the prepared payload, and a dedicated least-privilege database user reads the customer's data (20). The docs warn that AI clients can be tricked by untrusted prompts and tell users to review edit, publish and unpublish calls (8 of 15). The security page lists access logs for database operations and for the platform, and analytics expose run rows; no customer-facing log of MCP calls was described (8 of 15). The security page claims penetration testing and a bug bounty programme without a link, SOC 2 is coming soon, no security.txt (404), and the MCP repository's SECURITY.md routes reports to support (8 of 20). Total 74.",
          "checked": "2026-11-06"
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 10,
          "points": 1.25,
          "reason": "No x402, MPP or L402 (0). Plan prices with included emails are public in pricing.md, no per-email overage price (10 of 20). No free plan for new accounts (0). Signup, database connection and payment happen in the web app (0). Total 10.",
          "checked": "2026-11-06"
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 80,
          "points": 7,
          "reason": "The latest changelog entry is 12 October 2026, custom repeating schedules (30). Eight dated entries between 10 August and 12 October (20). Priority support on Pro, dedicated support on Scale and a public changelog (10 of 15). ai.dreamlit/mcp is in the official MCP registry under its domain namespace (15). The metadata repository has validate and publish workflows; there's no package to check (5 of 10). Total 80.",
          "checked": "2026-11-06"
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 59,
          "points": 5.16,
          "note": "editorial 42, provenance 75",
          "reason": "A closed service under terms that name Notika AI (d/b/a Dreamlit AI) (15 of 30). The privacy policy keeps workflow execution history and delivery events for up to a year, while the security docs say Dreamlit retains no copy of customer data and cleans up after processing, which don't agree (15 of 30). No deprecation policy or dated notices found (0). The privacy policy points to a current subprocessor list and SCCs in a DPA, and names the United States and other countries as locations (12 of 20). Total 42.",
          "checked": "2026-11-06"
        }
      ],
      "assessment": {
        "date": "2026-11-06",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "16 tools, the 11 to 30 band; tools follow the granted scopes, so a read-only grant sees fewer (20 of 25). Analytics take filters, sorting and pagination, and brand styles paginate (18 of 20). The docs describe the errors an agent will meet, such as authorization required, choose a project and browser hand-off, without codes (12 of 20). Publishing is prepare then confirm, and tests don't publish; no idempotency or annotations documented (10 of 20). Empty scope requests default to the v1 scopes and `get_status` gives a first call; no SDK or REST route (7 of 15). Total 67.",
          "maintenance": "The latest changelog entry is 12 October 2026, custom repeating schedules (30). Eight dated entries between 10 August and 12 October (20). Priority support on Pro, dedicated support on Scale and a public changelog (10 of 15). ai.dreamlit/mcp is in the official MCP registry under its domain namespace (15). The metadata repository has validate and publish workflows; there's no package to check (5 of 10). Total 80.",
          "payments": "No x402, MPP or L402 (0). Plan prices with included emails are public in pricing.md, no per-email overage price (10 of 20). No free plan for new accounts (0). Signup, database connection and payment happen in the web app (0). Total 10.",
          "reliability": "Graded with the hosted lines. A Better Stack status page at status.dreamlit.ai with 90 days of history for the Web App and the Workflow Engine, but no component for the MCP server (16 of 20). The record shows 100% for the web app and 99.992% for the workflow engine over 90 days, about ten minutes, with no written incidents (25 of 30). No rate limits found in the MCP or pricing docs (0). No 429, retry or idempotency guidance found (0). Scale includes dedicated support with an SLA and Enterprise has custom SLAs, but no published availability commitment (0). The MCP server, introduced on 5 May 2026, carries no beta label (10). Total 51.",
          "schema": "The registry entry and the dreamlit-ai/dreamlit-mcp repository carry metadata only, so tool JSON Schemas are readable only inside a session; the docs give each tool's purpose and required scope (5 of 25). llms.txt, pricing.md and Markdown copies of docs pages (10). Tool descriptions say when to use each, such as `edit_workflow_steps` for exact edits without AI, and the publish pair's order (16 of 20). Parameter types aren't published beyond names such as `includeEmailHtml` and `startNewChat` (5 of 15). Example prompts and a troubleshooting section for each documented error state (10 of 15). A dated changelog; server version 0.1.0 in the registry (13 of 15). Total 59.",
          "security": "OAuth to one workspace with four scopes, and project-scoped personal access tokens with chosen scopes, shown once (30). A read-only grant is possible, publishing needs its own scope, `confirm_publish` runs only after the user approves the prepared payload, and a dedicated least-privilege database user reads the customer's data (20). The docs warn that AI clients can be tricked by untrusted prompts and tell users to review edit, publish and unpublish calls (8 of 15). The security page lists access logs for database operations and for the platform, and analytics expose run rows; no customer-facing log of MCP calls was described (8 of 15). The security page claims penetration testing and a bug bounty programme without a link, SOC 2 is coming soon, no security.txt (404), and the MCP repository's SECURITY.md routes reports to support (8 of 20). Total 74.",
          "transparency": "A closed service under terms that name Notika AI (d/b/a Dreamlit AI) (15 of 30). The privacy policy keeps workflow execution history and delivery events for up to a year, while the security docs say Dreamlit retains no copy of customer data and cleans up after processing, which don't agree (15 of 30). No deprecation policy or dated notices found (0). The privacy policy points to a current subprocessor list and SCCs in a DPA, and names the United States and other countries as locations (12 of 20). Total 42."
        },
        "sources": [
          {
            "what": "MCP server docs",
            "url": "https://dreamlit.ai/docs/resources/mcp-server",
            "seen": "2026-11-06"
          },
          {
            "what": "llms.txt",
            "url": "https://dreamlit.ai/llms.txt",
            "seen": "2026-11-06"
          },
          {
            "what": "pricing",
            "url": "https://dreamlit.ai/pricing.md",
            "seen": "2026-11-06"
          },
          {
            "what": "security docs",
            "url": "https://dreamlit.ai/docs/resources/security",
            "seen": "2026-11-06"
          },
          {
            "what": "status page",
            "url": "https://status.dreamlit.ai/",
            "seen": "2026-11-06"
          },
          {
            "what": "changelog",
            "url": "https://dreamlit.ai/changelog",
            "seen": "2026-11-06"
          },
          {
            "what": "terms",
            "url": "https://dreamlit.ai/terms-of-service",
            "seen": "2026-11-06"
          },
          {
            "what": "privacy policy",
            "url": "https://dreamlit.ai/privacy-policy",
            "seen": "2026-11-06"
          },
          {
            "what": "about page",
            "url": "https://dreamlit.ai/about",
            "seen": "2026-11-06"
          },
          {
            "what": "MCP metadata repository",
            "url": "https://github.com/dreamlit-ai/dreamlit-mcp",
            "seen": "2026-11-06"
          },
          {
            "what": "official MCP registry",
            "url": "https://registry.modelcontextprotocol.io/v0/servers?search=dreamlit",
            "seen": "2026-11-06"
          }
        ],
        "openQuestions": [
          "unchecked: the MCP tools' input schemas and annotations, which are only available inside an MCP session",
          "The security page's no-retention claim and the privacy policy's one-year retention disagree",
          "The bug bounty programme claimed on the security page wasn't found",
          "RDAP gave no registration date for dreamlit.ai"
        ]
      },
      "negative": 0,
      "verdict": "Scoped OAuth and a two-step prepare-then-confirm publish let an agent draft and test lifecycle workflows without sending anything live by mistake. There is no REST API or published rate limit, tool schemas aren't public outside a session, there's no free plan, and its security page and privacy policy disagree on retention.",
      "bestFor": "Small product teams on Supabase or Postgres who want their coding agent to build lifecycle and transactional email workflows.",
      "strengths": [
        "Separate OAuth scopes for reading, drafting, publishing and analytics, and project-scoped tokens",
        "Nothing goes live without `prepare_publish` followed by an approved `confirm_publish`",
        "`send_workflow_test` sends a draft to the user or a chosen address without publishing",
        "Better Stack status page with 90 days of history for the web app and workflow engine",
        "Dated changelog with eight entries between 10 August and 12 October 2026"
      ],
      "weaknesses": [
        "No REST API, SDK or OpenAPI; the MCP server is the only programmatic route",
        "No rate limits, 429 guidance or idempotency documented for MCP calls",
        "No free plan for new accounts; Pro starts at $20 a month",
        "The status page has no component for the MCP server",
        "The security page says no copy of data is kept, while the privacy policy keeps workflow history and delivery events for up to a year"
      ],
      "agentNotes": [
        "Call `get_status` first to see the workspace, project setup state and prompting guidance",
        "Use `send_workflow_test` to the user before `prepare_publish`, and call `confirm_publish` only after the user approves the returned payload",
        "Request `workflows:read` and `analytics:read` only when the task is reporting, so the grant can't publish",
        "Expect a browser hand-off link when setup or an unsupported edit needs the web app, and pass it to the user"
      ],
      "metrics": {
        "kind": "remote",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "C",
          "methodology": "0.7",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 57
        }
      ],
      "editorialScores": {
        "ergonomics": 67,
        "maintenance": 80,
        "payments": 10,
        "reliability": 51,
        "schema": 59,
        "security": 74,
        "transparency": 42
      },
      "provenanceScore": 75,
      "checked": {
        "categories": {
          "ergonomics": "2026-11-06",
          "maintenance": "2026-11-06",
          "payments": "2026-11-06",
          "reliability": "2026-11-06",
          "schema": "2026-11-06",
          "security": "2026-11-06",
          "transparency": "2026-11-06"
        },
        "last": "2026-11-06",
        "oldest": "2026-11-06",
        "stale": false,
        "staleAfterDays": 90
      },
      "scoreHistory": [
        {
          "date": "2026-11-06",
          "grade": "C",
          "kind": "listed",
          "method": "0.7",
          "score": 57
        }
      ]
    },
    "connect": {
      "claudeCode": "claude mcp add --transport http dreamlit https://mcp.dreamlit.ai/mcp",
      "config": {
        "mcpServers": {
          "dreamlit": {
            "url": "https://mcp.dreamlit.ai/mcp"
          }
        }
      }
    },
    "letme": {
      "capability": "https://letme.dev/marketing.journeys",
      "tool": "https://letme.dev/dreamlit"
    },
    "notable": [
      "Publishing is two calls: `prepare_publish` validates and returns a confirmation payload with a preview URL, and `confirm_publish` runs only after the user approves (https://dreamlit.ai/docs/resources/mcp-server)",
      "Four OAuth scopes separate reading, drafting, publishing and analytics, and personal access tokens are limited to one project (https://dreamlit.ai/docs/resources/mcp-server)",
      "Workflows read from the customer's own Supabase or Postgres through a dedicated `dreamlit_app` database user (https://dreamlit.ai/docs/resources/security)",
      "Listed in the official MCP registry as ai.dreamlit/mcp since 7 May 2026, under its domain namespace (https://registry.modelcontextprotocol.io/v0/servers?search=dreamlit)",
      "The security page says Dreamlit retains no copy of customer data, while the privacy policy says it keeps workflow history and delivery events for up to a year (https://dreamlit.ai/privacy-policy)"
    ],
    "area": "communication",
    "details": [
      {
        "label": "Surface listed",
        "value": "The hosted MCP server at mcp.dreamlit.ai/mcp, read from dreamlit.ai docs, llms.txt, pricing.md, the security and legal pages, the status page, the changelog, the MCP registry and the dreamlit-ai/dreamlit-mcp metadata repository on 6 November 2026. No account was made and no session was opened"
      },
      {
        "label": "MCP tools",
        "value": "16 tools: get_status, list_projects, list_workflows, list_brand_styles, get_workflow_and_preview_url, get_analytics, get_lifecycle_report, get_recommendations, create_or_update_workflow, edit_workflow_steps, rename_workflow, move_workflow_to_folder, send_workflow_test, prepare_publish, confirm_publish, unpublish_workflow"
      },
      {
        "label": "Data sources",
        "value": "Supabase or Postgres, connected in the web app with a dedicated database user; Shopify is also documented"
      },
      {
        "label": "Sending",
        "value": "Email through AWS SES on Dreamlit's domain or the customer's, and Slack messages"
      },
      {
        "label": "Category",
        "value": "Lifecycle-marketing, since it runs triggered and recurring lifecycle workflows and broadcasts with analytics rather than a sending API"
      },
      {
        "label": "Legal entity",
        "value": "Notika AI, doing business as Dreamlit AI, per the terms and privacy policy of 29 January 2026"
      }
    ],
    "unitPrices": [
      {
        "item": "Pro",
        "unit": "month",
        "usd": 20,
        "note": "30,000 emails a month, 250 agent credits; $16 billed yearly"
      },
      {
        "item": "Scale",
        "unit": "month",
        "usd": 99,
        "note": "100,000 emails a month, 500 agent credits; $79 billed yearly"
      }
    ],
    "provenance": {
      "legalEntity": "Notika AI (d/b/a Dreamlit AI)",
      "domain": "dreamlit.ai",
      "domainRegistered": "",
      "endpointOnVendorDomain": true,
      "terms": "https://dreamlit.ai/terms-of-service",
      "privacy": "https://dreamlit.ai/privacy-policy",
      "statusPage": "https://status.dreamlit.ai",
      "changelog": "https://dreamlit.ai/changelog",
      "securityTxt": "none",
      "checked": "2026-11-06",
      "notes": [
        "The terms and privacy policy, both last updated 29 January 2026, name Notika AI (d/b/a Dreamlit AI).",
        "dreamlit.ai/robots.txt allows all paths with Content-Signal ai-input=yes. The terms contain no clause on automated access to the website that we found.",
        "RDAP for dreamlit.ai returned a transfer event (8 June 2025) but no registration date.",
        "/.well-known/security.txt returns 404. The security page claims penetration testing and a bug bounty programme without a link; the MCP repository's SECURITY.md routes reports to the support address.",
        "The privacy policy says subprocessors are listed and SCCs are offered in a DPA at dreamlit.ai/dpa."
      ],
      "score": 75,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Notika AI (d/b/a Dreamlit AI)",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "dreamlit.ai, no registry record we could read",
          "points": 0,
          "max": 15,
          "state": "no"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "mcp.dreamlit.ai",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "read, states 4 of the 7 things a reader expects",
          "points": 7.4,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 7 of the 8 things a reader expects",
          "points": 9.3,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Status page",
          "value": "status.dreamlit.ai",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "People named",
          "value": "2 named with their role, 2 with a public profile",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Support route",
          "value": "a support address, help pages",
          "points": 5,
          "max": 5,
          "state": "ok"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://dreamlit.ai/terms-of-service",
          "state": "read",
          "readAt": "2026-11-06",
          "statedDate": "2026-01-29",
          "words": 925,
          "points": 7.4,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last updated: January 29, 2026",
              "says": "Last updated 2026-01-29"
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": false
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "TO THE FULLEST EXTENT PERMITTED BY LAW, IN NO EVENT WILL DREAMLIT, ITS AFFILIATES, OFFICERS, EMPLOYEES, AGENTS, SUPPLIERS, OR LICENSORS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, INCLUDING WITHOUT LIMITATION LOSS OF PROFITS, DATA, USE, GOODWILL, OR OTHER INTANGIBLE LOSSES, RES…",
              "says": "Rules out indirect and consequential losses, with no cap named in this sentence"
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": false
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": true,
              "quote": "If we do this, we will post the changes on this page and indicate at the top of this page the date these Terms of Service were last revised.",
              "says": "Changes are posted, with no other notice named"
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "If you disagree with any part of the Terms, you may not access the Service."
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": false
            }
          ],
          "toKnow": [
            {
              "key": "terms.arbitration",
              "label": "Requires arbitration or waives class actions",
              "found": true,
              "quote": "DISPUTES RELATED TO THESE TERMS OR THE SERVICE MUST BE RESOLVED THROUGH BINDING ARBITRATION."
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://dreamlit.ai/privacy-policy",
          "state": "read",
          "readAt": "2026-11-06",
          "statedDate": "2026-01-29",
          "words": 726,
          "points": 9.3,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last updated: January 29, 2026",
              "says": "Last updated 2026-01-29"
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": true,
              "quote": "We may collect or process the following types of information:"
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": false
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "We may share personal information with service providers (subprocessors) who help us run Dreamlit (for example: hosting, analytics, support, payments), with professional advisors, and with authorities when required by law."
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": true,
              "quote": "We may share personal information with service providers (subprocessors) who help us run Dreamlit (for example: hosting, analytics, support, payments), with professional advisors, and with authorities when required by law."
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": true,
              "quote": "If you are an end user of one of our customers and you want to exercise rights regarding emails you received, you should contact the organization you interacted with (our customer)."
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": true,
              "quote": "For questions about this Privacy Policy, please contact us at: support@dreamlit.ai.",
              "says": "support@dreamlit.ai"
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": true,
              "quote": "Where required for transfers out of the EEA/UK, we offer Standard Contractual Clauses (SCCs) as described in our DPA.",
              "says": "Relies on standard contractual clauses"
            }
          ]
        }
      ]
    },
    "humans": {
      "slug": "dreamlit",
      "checked": "2026-11-06",
      "company": "Notika AI",
      "people": [
        {
          "name": "Ajay Sohmshetty",
          "role": "Co-founder and CEO",
          "founder": true,
          "linkedin": "https://www.linkedin.com/in/ajaysohmshetty/",
          "x": "https://x.com/AjaySohmshetty",
          "page": "/people/ajay-sohmshetty/"
        },
        {
          "name": "Andrew Kim",
          "role": "Co-founder and CTO",
          "founder": true,
          "linkedin": "https://www.linkedin.com/in/andrewk17/",
          "page": "/people/andrew-kim/"
        }
      ],
      "peopleNote": "The about page names the two founders with their roles and links their LinkedIn accounts, and Ajay's X account. Ajay was previously co-founder and CTO of Harmonic AI and an engineer at Google; Andrew built partner integrations at Netflix. The terms name Notika AI (d/b/a Dreamlit AI). The about page shows a 'Backed by' row of logos; no round, amount or date was found on dreamlit.ai. Cloudflare Workers Launchpad is shown in the same row but is a startup programme, so it isn't listed as an investor. On 6 November 2026 the dreamlit.ai sitemap (26 pages) and all 13 blog posts were read for a funding announcement and a web search was run; no round amount, total raised or valuation is stated on Dreamlit's pages or in a reputable report, so totalRaised and valuation are left out.",
      "companySocial": {
        "linkedin": "https://www.linkedin.com/company/dreamlit-ai",
        "x": "https://x.com/DreamlitAI",
        "github": "https://github.com/dreamlit-ai"
      },
      "support": {
        "emails": [
          "support@dreamlit.ai"
        ],
        "urls": [
          "https://dreamlit.ai/docs/resources/getting-support",
          "https://status.dreamlit.ai/"
        ]
      },
      "sources": [
        "https://dreamlit.ai/about",
        "https://dreamlit.ai/terms-of-service",
        "https://dreamlit.ai/pricing.md"
      ],
      "ownership": {
        "status": "private",
        "checked": "2026-11-06",
        "sources": [
          "https://dreamlit.ai/about",
          "https://dreamlit.ai/terms-of-service"
        ]
      },
      "investors": [
        {
          "name": "Abstraction Capital",
          "kind": "vc",
          "url": "https://abstractionvc.com/",
          "source": "https://dreamlit.ai/about",
          "quote": "Backed by",
          "page": "/investors/abstraction-capital/"
        },
        {
          "name": "Saxecap",
          "kind": "vc",
          "url": "https://saxecap.com/",
          "source": "https://dreamlit.ai/about",
          "quote": "Backed by",
          "page": "/investors/saxecap/"
        },
        {
          "name": "Kanosei",
          "kind": "other",
          "url": "https://kanosei.xyz/",
          "source": "https://dreamlit.ai/about",
          "quote": "Backed by",
          "page": "/investors/kanosei/"
        },
        {
          "name": "Forum VC",
          "firm": "Forum Ventures",
          "kind": "vc",
          "url": "https://www.forumvc.com/",
          "source": "https://dreamlit.ai/about",
          "quote": "Backed by",
          "page": "/investors/forum-ventures/"
        },
        {
          "name": "Austin Nasso",
          "kind": "angel",
          "url": "https://austinnasso.com/",
          "source": "https://dreamlit.ai/about",
          "quote": "Backed by",
          "page": "/investors/austin-nasso/"
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/dreamlit.json",
    "live": {
      "slug": "dreamlit",
      "probe": {
        "target": "https://mcp.dreamlit.ai/mcp",
        "method": "mcp-initialize",
        "lastAt": "2026-11-07T18:20:21.651954632Z",
        "lastOk": true,
        "lastStatus": 200,
        "lastMs": 209,
        "lastNote": "initialize answered",
        "authRequired": false,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 155,
        "p95ms24h": 303,
        "samples24h": 200,
        "samples30d": 200,
        "days": [
          {
            "date": "2026-11-06",
            "probes": 13,
            "ok": 13
          },
          {
            "date": "2026-11-07",
            "probes": 187,
            "ok": 187
          }
        ]
      },
      "vendorStatus": {
        "page": "https://status.dreamlit.ai",
        "indicator": "unknown",
        "summary": "no machine-readable status found",
        "checkedAt": "2026-11-07T04:47:40.393037973Z"
      },
      "versions": [
        {
          "registry": "mcp-registry",
          "name": "ai.dreamlit/mcp",
          "version": "0.1.0",
          "seenAt": "2026-11-07T18:16:28.95801333Z"
        }
      ],
      "githubStars": 0,
      "securityTxt": {
        "url": "https://dreamlit.ai/.well-known/security.txt",
        "state": "none",
        "checkedAt": "2026-11-07T15:59:27.690762051Z"
      },
      "llmsTxt": {
        "url": "https://dreamlit.ai/llms.txt",
        "ok": true,
        "status": 200,
        "checkedAt": "2026-11-07T15:32:19.99369807Z"
      },
      "pages": [
        {
          "url": "https://dreamlit.ai/changelog",
          "kind": "changelog",
          "status": 200,
          "checkedAt": "2026-11-07T14:08:59.883908631Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "d5efd0517602"
        },
        {
          "url": "https://dreamlit.ai/privacy-policy",
          "kind": "privacy",
          "status": 200,
          "checkedAt": "2026-11-07T14:09:02.82685007Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "5cea1328f21d"
        },
        {
          "url": "https://dreamlit.ai/terms-of-service",
          "kind": "terms",
          "status": 200,
          "checkedAt": "2026-11-07T14:09:04.008676629Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "9fbc316c2506"
        }
      ],
      "mcpTools": {
        "url": "https://mcp.dreamlit.ai/mcp",
        "checkedAt": "2026-11-07T01:43:51.385315264Z",
        "status": "ok",
        "protocol": "2025-11-25",
        "tools": [
          {
            "name": "get_status",
            "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. Workflow summaries include liveStatus, and broadcasts include an authoritative broadcast.state. Database tables that Dreamlit can see but not read rows from (row level security with no policy for Dreamlit) carry a warning and fixSql; run fixSql, or ask the user to run it, in the Supabase SQL editor. If Dreamlit couldn't read a connection's tables, that connection has tablesError instead of an empty list meaning no tables. Do not use this to create, update, publish, or unpublish workflows.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "projectId": {
                  "description": "Optional project id. Include it to return project setup, schema hints, and authoring context.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "type": "string"
                },
                "workflowId": {
                  "description": "Optional workflow id. Include it to return concise workflow state and preview URL.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Get status"
            }
          },
          {
            "name": "create_or_update_workflow",
            "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, then describe the steps to change by what they do, not by step id. Each call continues the workflow's current chat; pass startNewChat to start fresh. Broadcasts that are scheduled, sent, or cancelled can't be edited; duplicate them in the Dreamlit web app instead. Existing Supabase Auth workflows can be edited except for the immutable trigger step; creating Supabase Auth workflows must happen through Supabase Auth email setup in the Dreamlit web app. Side effect: may create or modify a draft, but does not publish or install live triggers. Returns the workflow/draft result, action-required or handoff details when more input is needed, and relevant app URLs. Do not use for publishing, direct database changes, or low-level graph edits.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "name": {
                  "description": "Name for a new workflow draft. Use when the user names the workflow; otherwise Dreamlit picks one. Only valid when creating; use rename_workflow to rename an existing workflow.",
                  "type": "string"
                },
                "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. When editing, refer to existing steps by what they do (for example, the query that finds returning customers, or the email with subject \"Welcome back\"), never by step id. 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"
                },
                "startNewChat": {
                  "description": "Start a fresh Dreamlit chat for this request instead of continuing the workflow's current chat. The new chat still sees the current draft but not earlier turns. Use when switching to an unrelated change, after long turns with pasted SQL or HTML, or when Dreamlit keeps misreading the request. Ignored when creating a workflow.",
                  "type": "boolean"
                },
                "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"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": true,
              "readOnlyHint": false,
              "title": "Create or update workflow"
            }
          },
          {
            "name": "edit_workflow_steps",
            "title": "Edit workflow steps",
            "description": "Applies up to 5 exact edits to existing steps in a workflow draft, instantly and without AI: email subject, preview text, HTML, sender, reply-to, and recipient; Slack message; query SQL; wait rule; and step description. Use when you know the exact new value; call get_workflow_and_preview_url first for step ids and current values, with includeEmailHtml to edit HTML. Edits are checked against the draft as it will be once they are all saved: templates and waits may only use fields their step gets, and query edits are rejected if later steps still use fields the new query no longer returns. Each edit applies on its own, except that a SQL edit and the edits below it apply together or not at all. The edits show in the workflow's Dreamlit chat. Side effect: changes the draft only; does not publish. Returns each edit's status with an error code and message for failed edits, and app URLs. Do not use to add, remove, or move steps, edit triggers, or make changes that need writing or judgment; use create_or_update_workflow for those.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "edits": {
                  "description": "Up to 5 edits, each to a different existing step. Fields must match the step type: email* fields for email steps, slackTemplate for Slack, queryText for queries, wait for waits.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "description": {
                        "description": "Step description for email, query, or Slack steps. Empty string clears it.",
                        "type": "string"
                      },
                      "emailFromAddress": {
                        "description": "Sender address on one of the project's sending domains.",
                        "minLength": 1,
                        "type": "string"
                      },
                      "emailFromName": {
                        "description": "Sender name. Empty string clears it.",
                        "type": "string"
                      },
                      "emailHtml": {
                        "description": "Full replacement email HTML body. Liquid allowed. Read the current body with get_workflow_and_preview_url includeEmailHtml first. Emails that allow unsubscribe must keep a link to {{ dreamlit_unsubscribe_url }}.",
                        "minLength": 1,
                        "type": "string"
                      },
                      "emailPreviewText": {
                        "description": "Email preview text. Liquid allowed. Empty string clears it.",
                        "type": "string"
                      },
                      "emailReplyTo": {
                        "description": "Reply-to address. Empty string clears it.",
                        "type": "string"
                      },
                      "emailSubject": {
                        "description": "Email subject. Liquid allowed.",
                        "minLength": 1,
                        "type": "string"
                      },
                      "emailTo": {
                        "description": "Recipient address or Liquid, such as {{ email }}.",
                        "minLength": 1,
                        "type": "string"
                      },
                      "queryText": {
                        "description": "Full replacement SQL for a query step. Must stay read-only and keep returning the fields later steps use.",
                        "minLength": 1,
                        "type": "string"
                      },
                      "slackTemplate": {
                        "description": "Full replacement Slack message. Liquid allowed.",
                        "minLength": 1,
                        "type": "string"
                      },
                      "stepId": {
                        "description": "Existing step id from get_workflow_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"
                      },
                      "wait": {
                        "description": "Replaces the whole wait rule: a fixed duration, or until the date and time in a row field.",
                        "oneOf": [
                          {
                            "properties": {
                              "amount": {
                                "description": "How long to wait, up to 365 days in total.",
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991,
                                "type": "integer"
                              },
                              "kind": {
                                "const": "duration",
                                "type": "string"
                              },
                              "unit": {
                                "enum": [
                                  "minutes",
                                  "hours",
                                  "days"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "kind",
                              "amount",
                              "unit"
                            ],
                            "type": "object"
                          },
                          {
                            "properties": {
                              "field": {
                                "description": "Field from the step's input rows that holds a date and time with an offset, such as renewal_reminder_at. The wait ends at that time.",
                                "minLength": 1,
                                "type": "string"
                              },
                              "kind": {
                                "const": "until_row_field",
                                "type": "string"
                              }
                            },
                            "required": [
                              "kind",
                              "field"
                            ],
                            "type": "object"
                          }
                        ]
                      }
                    },
                    "required": [
                      "stepId"
                    ],
                    "type": "object"
                  },
                  "maxItems": 5,
                  "minItems": 1,
                  "type": "array"
                },
                "workflowId": {
                  "description": "Workflow whose draft to edit.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{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",
                "edits"
              ],
              "type": "object"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Edit workflow steps"
            }
          },
          {
            "name": "rename_workflow",
            "title": "Rename workflow",
            "description": "Use when the user asks to rename an existing Dreamlit workflow. Side effect: changes only the workflow name; the draft, published version, and live triggers are unchanged. Returns the updated name and app URLs. Do not use to edit workflow content or to name a new workflow; pass name to create_or_update_workflow instead.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "name": {
                  "description": "New workflow name. Leading and trailing spaces are removed; it can't be blank.",
                  "type": "string"
                },
                "workflowId": {
                  "description": "Workflow id to rename.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{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",
                "name"
              ],
              "type": "object"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Rename workflow"
            }
          },
          {
            "name": "move_workflow_to_folder",
            "title": "Move workflow to folder",
            "description": "Use when the user asks to put a workflow or broadcast in a folder, move it to another folder, or take it out of a folder. Folders are per list: the Published and Drafts lists on the Workflows page and the Sent and Drafts lists on the Broadcasts page each have their own folders, and this moves the workflow within the list it shows in now. Folders are flat; a \"/\" is just part of the name. A draft's folder does not carry over when it is published. Side effect: may create the folder; never deletes folders and does not change the draft, published version, or live triggers. Returns the folder, the list, and app URLs. Do not use to rename or delete folders.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "folder": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Folder name, up to 64 characters. Matching ignores case and leading or trailing spaces; Dreamlit creates the folder if it doesn't exist yet. Pass null to take the workflow out of its folder."
                },
                "workflowId": {
                  "description": "Workflow id to move.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{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",
                "folder"
              ],
              "type": "object"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Move workflow to folder"
            }
          },
          {
            "name": "list_projects",
            "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.",
            "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"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "List projects"
            }
          },
          {
            "name": "list_workflows",
            "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, liveStatus, trigger type, folder (the folder name in the list the workflow shows in, or null), workflow URLs, totalCount, hasMore, and nextOffset. Broadcasts also include a broadcast object with state (draft, scheduled, sending, sent, cancelled, or failed), scheduledFor, and cancelledAt or completedAt; for broadcasts, broadcast.state and liveStatus are authoritative over published, because a cancelled broadcast stays published but will not send. Do not use as the final source of truth before editing; call get_workflow_and_preview_url for full structure.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "limit": {
                  "default": 80,
                  "description": "Maximum number of workflows to return for this page.",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "offset": {
                  "default": 0,
                  "description": "Zero-based workflow offset for pagination. Use nextOffset from the previous response to fetch the next page.",
                  "maximum": 9007199254740991,
                  "minimum": 0,
                  "type": "integer"
                },
                "projectId": {
                  "description": "Project id to list workflows from. Required when access is ambiguous.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "type": "string"
                },
                "search": {
                  "description": "Optional workflow name or description search string.",
                  "maxLength": 200,
                  "type": "string"
                },
                "triggerFilters": {
                  "description": "Optional trigger type filters. Use broadcast only for one-time audience emails.",
                  "items": {
                    "enum": [
                      "auth_email",
                      "database",
                      "broadcast",
                      "repeating",
                      "none"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "List workflows"
            }
          },
          {
            "name": "list_brand_styles",
            "title": "List brand styles",
            "description": "Read-only. Use when the user wants to inspect saved project brand styles for generated email drafts. Returns paginated project brand style summaries, ids, default status, style metadata, and app URLs. Do not use to create, update, delete, or expose raw style provenance.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "limit": {
                  "default": 50,
                  "description": "Maximum number of brand styles to return for this page.",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "offset": {
                  "default": 0,
                  "description": "Zero-based brand style offset for pagination. Use nextOffset from the previous response to fetch the next page.",
                  "maximum": 9007199254740991,
                  "minimum": 0,
                  "type": "integer"
                },
                "projectId": {
                  "description": "Project id to list brand styles from. Required when access is ambiguous.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "List brand styles"
            }
          },
          {
            "name": "get_workflow_and_preview_url",
            "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, liveStatus, the Dreamlit preview/builder URL, and status URLs. Broadcasts also include a broadcast object with state (draft, scheduled, sending, sent, cancelled, or failed), the run's scheduledFor, and cancelledAt or completedAt; this, not published or the trigger's sendAt, says whether the broadcast will send. Email HTML bodies are left out unless includeEmailHtml is true. Pass step ids only to edit_workflow_steps; when asking create_or_update_workflow for changes, describe steps by what they do. Do not use to create, update, publish, or unpublish workflows.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "includeEmailHtml": {
                  "description": "Also return each email step's full HTML body as emailTemplate.html. Off by default because bodies are large; turn on before editing email HTML with edit_workflow_steps.",
                  "type": "boolean"
                },
                "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"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Get workflow and preview URL"
            }
          },
          {
            "name": "get_analytics",
            "title": "Get analytics",
            "description": "Read-only. Use get_analytics to query raw notification analytics: email and Slack sends and deliveries, email opens, clicks and bounces, overview metrics, per-recipient rows and 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. Use get_lifecycle_report or get_recommendations for Dreamlit's prepared analysis. Does not provide Dreamlit's lifecycle judgments or prioritized recommendations. Do not use for CSV exports, bulk dumps, workflow edits, publishing, or low-level database access.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "channel": {
                  "description": "Notification channel for overview and notification analytics. Defaults to email. Recipient analytics are email-only.",
                  "enum": [
                    "email",
                    "slack"
                  ],
                  "type": "string"
                },
                "cursor": {
                  "description": "Opaque pagination cursor from a previous get_analytics response.",
                  "maxLength": 2048,
                  "minLength": 1,
                  "type": "string"
                },
                "filters": {
                  "description": "Optional analytics filters. Unsupported combinations return a clear error.",
                  "properties": {
                    "engagement": {
                      "description": "Email engagement filter.",
                      "enum": [
                        "undelivered",
                        "bounced",
                        "complained",
                        "clicked",
                        "opened"
                      ],
                      "type": "string"
                    },
                    "notificationStatuses": {
                      "description": "Email notification lifecycle statuses to include.",
                      "items": {
                        "enum": [
                          "sent",
                          "pending",
                          "releasable",
                          "failed",
                          "canceled",
                          "suppressed",
                          "opted_out"
                        ],
                        "type": "string"
                      },
                      "maxItems": 7,
                      "type": "array"
                    },
                    "recipient": {
                      "description": "Email recipient search string.",
                      "maxLength": 320,
                      "type": "string"
                    },
                    "runStatuses": {
                      "description": "Workflow run statuses to include. Only applies to workflow_runs.",
                      "items": {
                        "enum": [
                          "RUNNING",
                          "PAUSED",
                          "COMPLETED",
                          "FAILED",
                          "SKIPPED",
                          "CANCELLED"
                        ],
                        "type": "string"
                      },
                      "maxItems": 6,
                      "type": "array"
                    },
                    "slackWebhookIds": {
                      "description": "Slack webhook ids to include for Slack notification analytics.",
                      "items": {
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "type": "string"
                      },
                      "maxItems": 100,
                      "type": "array"
                    },
                    "startedAt": {
                      "description": "Workflow run started timestamp range. Only applies to workflow_runs.",
                      "properties": {
                        "from": {
                          "description": "Inclusive ISO timestamp lower bound.",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                          "type": "string"
                        },
                        "to": {
                          "description": "Inclusive ISO timestamp upper bound.",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "topicIds": {
                      "description": "Email unsubscribe topic ids to include.",
                      "items": {
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "type": "string"
                      },
                      "maxItems": 100,
                      "type": "array"
                    },
                    "workflowIds": {
                      "description": "Workflow ids to include.",
                      "items": {
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "type": "string"
                      },
                      "maxItems": 100,
                      "type": "array"
                    },
                    "workflowRunId": {
                      "description": "Workflow run id to include for notification analytics.",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "type": "string"
                    },
                    "workflowStepRunId": {
                      "description": "Workflow step run id to include for notification analytics.",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "include": {
                  "description": "Optional response sections to include. Defaults depend on the requested view.",
                  "items": {
                    "enum": [
                      "summary",
                      "series",
                      "rows",
                      "recentEvents",
                      "segments"
                    ],
                    "type": "string"
                  },
                  "maxItems": 5,
                  "type": "array"
                },
                "limit": {
                  "description": "Maximum rows to return. Defaults to 25 and is capped at 100.",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "projectId": {
                  "description": "Project id to query analytics from. Required when access is ambiguous.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "type": "string"
                },
                "range": {
                  "description": "Optional explicit timestamp range. Overrides window and is applied to the view's primary timestamp.",
                  "properties": {
                    "from": {
                      "description": "Inclusive ISO timestamp lower bound.",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                      "type": "string"
                    },
                    "to": {
                      "description": "Inclusive ISO timestamp upper bound.",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "sort": {
                  "description": "Optional row sort. Overview ignores sorting.",
                  "properties": {
                    "dir": {
                      "description": "Sort direction. Defaults to desc.",
                      "enum": [
                        "asc",
                        "desc"
                      ],
                      "type": "string"
                    },
                    "field": {
                      "description": "Sort field. Valid fields depend on the requested view.",
                      "enum": [
                        "timestamp",
                        "sentTo",
                        "subject",
                        "workflow",
                        "engagement",
                        "recipient",
                        "lastSentAt",
                        "sent",
                        "opened",
                        "clicked",
                        "bounced",
                        "complained"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "field"
                  ],
                  "type": "object"
                },
                "timeZone": {
                  "description": "IANA timezone for daily series bucketing. Defaults to UTC.",
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                },
                "view": {
                  "description": "Analytics surface to query: overview cards, notification rows, recipient rows, or workflow run rows.",
                  "enum": [
                    "overview",
                    "notifications",
                    "recipients",
                    "workflow_runs"
                  ],
                  "type": "string"
                },
                "window": {
                  "description": "Relative analytics window. Defaults to 30d. Ignored when range is provided.",
                  "enum": [
                    "1h",
                    "24h",
                    "7d",
                    "14d",
                    "30d",
                    "90d",
                    "all"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "view"
              ],
              "type": "object"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Get analytics"
            }
          },
          {
            "name": "get_lifecycle_report",
            "title": "Get lifecycle report",
            "description": "Side effect: creates a preparation request when no report is ready or refresh is true and the latest report became ready more than 24 hours ago; repeat calls reuse an open request. Pass refresh: true only when the user asks for a new report; when checking on a pending report, call without refresh. Use for Dreamlit's prepared lifecycle analysis: key metrics worth tracking, the signup-to-paid funnel and where users drop off, deliverability health, and which stages (welcome, onboarding, engagement, retention, winback) have no emails yet. Available on Pro and Scale plans only. Reports are prepared by Dreamlit's agents and reviewed by our team. Returns a ready report or a processing state while Dreamlit prepares it; check back later. The requester is also emailed when ready. Does not return raw notification analytics; use get_analytics for that.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "projectId": {
                  "description": "Project id. Optional when a personal token pins the project or exactly one project is available in the approved workspace.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "type": "string"
                },
                "refresh": {
                  "description": "Pass refresh: true only when the user asks for a new report; when checking on a pending report, call without refresh. Reuses an open request, otherwise returns the latest report if it was ready within the last 24 hours, or requests a new one.",
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Get lifecycle report"
            }
          },
          {
            "name": "get_recommendations",
            "title": "Get recommendations",
            "description": "Side effect: creates a preparation request when no report is ready or refresh is true and the latest report became ready more than 24 hours ago; repeat calls reuse an open request. Pass refresh: true only when the user asks for a new report; when checking on a pending report, call without refresh. Use for Dreamlit's prioritized recommendations on which emails or workflows to add and what to fix or change in existing ones. Available on Pro and Scale plans only. Reports are prepared by Dreamlit's agents and reviewed by our team. Returns a ready report or a processing state while Dreamlit prepares it; check back later. The requester is also emailed when ready. Does not return raw notification analytics; use get_analytics for that.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "projectId": {
                  "description": "Project id. Optional when a personal token pins the project or exactly one project is available in the approved workspace.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "type": "string"
                },
                "refresh": {
                  "description": "Pass refresh: true only when the user asks for a new report; when checking on a pending report, call without refresh. Reuses an open request, otherwise returns the latest report if it was ready within the last 24 hours, or requests a new one.",
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Get recommendations"
            }
          },
          {
            "name": "send_workflow_test",
            "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. If the test has no data because row level security hides a source table's rows from Dreamlit, returns error code table_rows_hidden_by_rls with unreadableTables[].fixSql to run, or ask the user to run, in the Supabase SQL editor. Do not expose test target ids as copy; ask users to choose by message label and confirm before sending.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "confirmSend": {
                  "description": "Set to true only after the user explicitly confirms sending this selected test message. If omitted or false, Dreamlit returns confirmation_required and does not send.",
                  "type": "boolean"
                },
                "messageType": {
                  "description": "Optional message type filter when selecting a draft message to test.",
                  "enum": [
                    "email",
                    "slack"
                  ],
                  "type": "string"
                },
                "rowData": {
                  "additionalProperties": {},
                  "description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
                  "propertyNames": {
                    "type": "string"
                  },
                  "type": "object"
                },
                "testRecipientEmail": {
                  "description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
                  "format": "email",
                  "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
                  "type": "string"
                },
                "testTargetId": {
                  "description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "type": "string"
                },
                "workflowId": {
                  "description": "Workflow id whose editable draft message should be tested.",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "type": "string"
                }
              },
              "required": [
                "workflowId"
              ],
              "type": "object"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Send workflow test"
            }
          },
          {
            "name": "prepare_publish",
            "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.",
            "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"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Prepare publish"
            }
          },
          {
            "name": "confirm_publish",
            "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.",
            "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"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "idempotentHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Confirm publish"
            }
          },
          {
            "name": "unpublish_workflow",
            "title": "Unpublish workflow",
            "description": "Use after explicit user intent to unpublish a Dreamlit workflow. Side effect: disables live triggers or schedules so no new runs start. Runs already in progress keep sending unless inProgressRuns is \"stop\". If the workflow has in-progress runs and inProgressRuns is omitted, returns clarification_required with the count and changes nothing: ask the user whether to stop those runs or let them finish, then call again with their choice. Returns updated workflow status, stopped run counts (allRunsStopped, remainingRunCount), and app URLs. If some runs could not be stopped, ask the user, then call again with inProgressRuns \"stop\": on an already-unpublished workflow it only stops the runs still in progress. Do not use for deleting drafts, canceling one broadcast run, or editing workflow content.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "inProgressRuns": {
                  "description": "What happens to runs already in progress, including runs waiting at a wait step. \"stop\" stops them so they send nothing more; \"let_finish\" lets them keep going and send. Required when the workflow has in-progress runs: ask the user, then call again with their choice. On an already-unpublished workflow, \"stop\" stops the runs still in progress.",
                  "enum": [
                    "stop",
                    "let_finish"
                  ],
                  "type": "string"
                },
                "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"
            },
            "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"
                            },
                            {
                              "additionalProperties": false,
                              "properties": {
                                "appUrls": {
                                  "additionalProperties": false,
                                  "properties": {
                                    "workflow": {
                                      "format": "uri",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "workflow"
                                  ],
                                  "type": "object"
                                },
                                "inProgressRunCount": {
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991,
                                  "type": "integer"
                                },
                                "kind": {
                                  "const": "unpublish_in_progress_runs",
                                  "type": "string"
                                },
                                "message": {
                                  "type": "string"
                                },
                                "options": {
                                  "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                      "inProgressRuns": {
                                        "enum": [
                                          "stop",
                                          "let_finish"
                                        ],
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "recommended": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "inProgressRuns",
                                      "label",
                                      "recommended"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "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"
                                },
                                "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",
                                "inProgressRunCount",
                                "options",
                                "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": {
                            "blocker": {
                              "additionalProperties": false,
                              "description": "Why Dreamlit stopped before finishing the draft. Changes counted in appliedActionCount are already saved.",
                              "properties": {
                                "appliedActionCount": {
                                  "maximum": 9007199254740991,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "code": {
                                  "description": "step_needs_detail: answer `detail` in a follow-up create_or_update_workflow call with the same workflowId. step_not_editable: change a different step instead. step_not_built: retry once, then finish in the browser. request_unclear: describe the change in more detail and retry.",
                                  "enum": [
                                    "step_needs_detail",
                                    "step_not_editable",
                                    "step_not_built",
                                    "request_unclear"
                                  ],
                                  "type": "string"
                                },
                                "detail": {
                                  "description": "The specific missing detail or blocking rule, in plain language.",
                                  "type": "string"
                                },
                                "stepTitle": {
                                  "type": "string"
                                },
                                "stepType": {
                                  "enum": [
                                    "database_trigger",
                                    "broadcast_trigger",
                                    "repeating_trigger",
                                    "query",
                                    "wait",
                                    "email",
                                    "slack"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "detail",
                                "appliedActionCount"
                              ],
                              "type": "object"
                            },
                            "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": {
                        "billingUrl": {
                          "description": "quota_exceeded or plan_upgrade_required: page where a workspace admin can buy AI credits or upgrade the plan.",
                          "format": "uri",
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "helpUrl": {
                          "description": "Guide or support contact for resolving the problem in the message.",
                          "format": "uri",
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "resetAt": {
                          "description": "quota_exceeded: when this month's AI usage resets (ISO 8601).",
                          "type": "string"
                        },
                        "retryAfterSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991,
                          "type": "integer"
                        },
                        "status": {
                          "const": "error",
                          "type": "string"
                        },
                        "stepEdits": {
                          "description": "edit_workflow_steps: what happened to each edit when none could be applied.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "changedFields": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "error": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "description": "step_not_found: get fresh step ids from get_workflow_and_preview_url. step_not_editable: triggers can't be edited here; use create_or_update_workflow. field_not_for_step_type: send only fields for that step's type. duplicate_step: combine edits to one step. invalid_value: fix the value as the message says. query_failed: fix the SQL. query_drops_used_fields: keep returning fields, or edit the steps that use them in the same call. related_edit_failed: a related edit in this call (a SQL edit above or below this step) failed; fix it and send both again. save_failed: try again.",
                                    "enum": [
                                      "step_not_found",
                                      "step_not_editable",
                                      "field_not_for_step_type",
                                      "duplicate_step",
                                      "invalid_value",
                                      "query_failed",
                                      "query_drops_used_fields",
                                      "related_edit_failed",
                                      "save_failed"
                                    ],
                                    "type": "string"
                                  },
                                  "fields": {
                                    "description": "query_drops_used_fields: fields later steps still use that the new query no longer returns.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "message"
                                ],
                                "type": "object"
                              },
                              "index": {
                                "description": "Position of the edit in the request.",
                                "maximum": 9007199254740991,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "status": {
                                "enum": [
                                  "applied",
                                  "failed"
                                ],
                                "type": "string"
                              },
                              "stepId": {
                                "type": "string"
                              },
                              "stepTitle": {
                                "type": "string"
                              },
                              "stepType": {
                                "enum": [
                                  "query",
                                  "wait",
                                  "email",
                                  "slack"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "index",
                              "stepId",
                              "status",
                              "changedFields"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "unreadableTables": {
                          "description": "table_rows_hidden_by_rls: tables Dreamlit can see but not read rows from, each with fixSql that adds Dreamlit's read policy. Run fixSql, or ask the user to run it, in the Supabase SQL editor, then try again.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "fixSql": {
                                "type": "string"
                              },
                              "schema": {
                                "type": "string"
                              },
                              "table": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "schema",
                              "table",
                              "fixSql"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "status",
                        "message"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "required": [
                "result"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "idempotentHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Unpublish workflow"
            }
          }
        ],
        "schemaTokens": 69715,
        "changedAt": "2026-11-07T01:43:51.385315264Z",
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 69715,
          "counts": {
            "error": 0,
            "note": 0,
            "warn": 18
          },
          "findings": [
            {
              "rule": "TC18",
              "severity": "warn",
              "tool": "prepare_publish",
              "message": "readOnlyHint is true but the name says \"publish\"",
              "fix": "If it changes anything, readOnlyHint must be false."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "confirm_publish",
              "message": "the definition is about 4,360 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "create_or_update_workflow",
              "message": "the definition is about 4,866 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "edit_workflow_steps",
              "message": "the definition is about 4,839 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "get_analytics",
              "message": "the definition is about 5,580 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "get_lifecycle_report",
              "message": "the definition is about 4,217 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "get_recommendations",
              "message": "the definition is about 4,188 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "get_status",
              "message": "the definition is about 4,209 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "get_workflow_and_preview_url",
              "message": "the definition is about 4,164 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "list_brand_styles",
              "message": "the definition is about 4,071 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "list_projects",
              "message": "the definition is about 3,956 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "list_workflows",
              "message": "the definition is about 4,289 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "move_workflow_to_folder",
              "message": "the definition is about 4,148 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "prepare_publish",
              "message": "the definition is about 3,999 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "rename_workflow",
              "message": "the definition is about 4,022 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "send_workflow_test",
              "message": "the definition is about 4,420 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "unpublish_workflow",
              "message": "the definition is about 4,231 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC23",
              "severity": "warn",
              "message": "16 tools, about 69,559 tokens of definitions",
              "fix": "Split the server by job, or offer a smaller default toolset (a read-only set, or a search-then-call pattern)."
            }
          ]
        }
      },
      "updatedAt": "2026-11-07T18:20:21.651954632Z"
    }
  }
}
