# Schema for kanban_create_task MCP tool
# Validates task creation requests with contracts
{
  tool_name = "kanban_create_task",

  description = "Create task in Kanban board with validation",

  parameters = {
    # Project UUID - must be valid UUID format
    project_id
      | String
      | doc "UUID of the target project"
      | std.string.NonEmpty
      | std.string.match "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",

    # Task title - 3 to 200 characters
    title
      | String
      | doc "Task title (3-200 chars)"
      | std.string.NonEmpty
      | std.string.length.min 3
      | std.string.length.max 200,

    # Optional description
    description
      | String
      | doc "Task description (optional)"
      | default = "",

    # Priority level - enum validation
    priority
      | String
      | doc "Task priority level"
      | std.string.NonEmpty
      | std.enum.TaggedUnion
      | [| 'low, 'medium, 'high, 'critical |],
  },

  # Validation contracts (custom predicates)
  contracts = {
    # Title must not be only whitespace
    title_not_whitespace = fun params =>
      std.string.trim params.title != "",
  },
}
