{
  "version": 1,
  "tools": [
    {
      "name": "sequence_create",
      "description": "Create an email sequence with multiple steps and delay intervals.",
      "category": "sequences",
      "risk": "low",
      "input_schema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the sequence"
          },
          "channel": {
            "type": "string",
            "description": "Messaging channel (e.g. \"gmail\")"
          },
          "steps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "delay_seconds": {
                  "type": "number",
                  "description": "Delay before sending this step (in seconds)"
                },
                "subject": {
                  "type": "string",
                  "description": "Subject line template"
                },
                "body_prompt": {
                  "type": "string",
                  "description": "Prompt or body text for this step"
                },
                "reply_in_same_conversation": {
                  "type": "boolean",
                  "description": "Whether to reply in the same conversation (default true for step 2+)"
                },
                "require_approval": {
                  "type": "boolean",
                  "description": "Whether to require user approval before sending (default false)"
                }
              },
              "required": ["body_prompt"]
            },
            "description": "Ordered list of sequence steps"
          },
          "description": {
            "type": "string",
            "description": "Optional description of the sequence"
          },
          "exit_on_reply": {
            "type": "boolean",
            "description": "Whether to stop the sequence when the contact replies (default true)"
          }
        },
        "required": ["name", "channel", "steps"]
      },
      "executor": "tools/sequence-create.ts",
      "execution_target": "host"
    },
    {
      "name": "sequence_list",
      "description": "List all email sequences with their status and enrollment counts.",
      "category": "sequences",
      "risk": "low",
      "input_schema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": ["active", "paused", "archived"],
            "description": "Filter by sequence status"
          }
        }
      },
      "executor": "tools/sequence-list.ts",
      "execution_target": "host"
    },
    {
      "name": "sequence_get",
      "description": "Get detailed information about a sequence including steps, enrollment counts, and status breakdown.",
      "category": "sequences",
      "risk": "low",
      "input_schema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Sequence ID"
          }
        },
        "required": ["id"]
      },
      "executor": "tools/sequence-get.ts",
      "execution_target": "host"
    },
    {
      "name": "sequence_update",
      "description": "Update a sequence or manage an enrollment's lifecycle. Two modes: (1) Sequence-level - pass `id` to change name, description, status (active/paused/archived), steps, or exit-on-reply. (2) Enrollment-level - pass `enrollment_id` + `enrollment_action` to pause, resume, or cancel an enrollment. Exactly one mode must be used per call.",
      "category": "sequences",
      "risk": "medium",
      "input_schema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Sequence ID to update (required for sequence-level changes)"
          },
          "enrollment_id": {
            "type": "string",
            "description": "Enrollment ID for enrollment-level lifecycle actions"
          },
          "enrollment_action": {
            "type": "string",
            "enum": ["pause", "resume", "cancel"],
            "description": "Action to perform on the enrollment (required when enrollment_id is provided)"
          },
          "name": {
            "type": "string",
            "description": "New name"
          },
          "description": {
            "type": "string",
            "description": "New description"
          },
          "status": {
            "type": "string",
            "enum": ["active", "paused", "archived"],
            "description": "New status (use this to pause/resume a sequence)"
          },
          "exit_on_reply": {
            "type": "boolean",
            "description": "Whether to exit on contact reply"
          },
          "steps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "delay_seconds": {
                  "type": "number",
                  "description": "Delay before sending this step (in seconds)"
                },
                "subject": {
                  "type": "string",
                  "description": "Subject line template"
                },
                "body_prompt": {
                  "type": "string",
                  "description": "Prompt or body text for this step"
                },
                "reply_in_same_conversation": {
                  "type": "boolean",
                  "description": "Whether to reply in the same conversation"
                },
                "require_approval": {
                  "type": "boolean",
                  "description": "Whether to require user approval before sending"
                }
              },
              "required": ["body_prompt"]
            },
            "description": "Replacement steps (replaces all existing steps)"
          }
        },
        "oneOf": [
          { "required": ["id"] },
          { "required": ["enrollment_id", "enrollment_action"] }
        ]
      },
      "executor": "tools/sequence-update.ts",
      "execution_target": "host"
    },
    {
      "name": "sequence_delete",
      "description": "Delete a sequence and cancel all its active enrollments.",
      "category": "sequences",
      "risk": "medium",
      "input_schema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Sequence ID to delete"
          }
        },
        "required": ["id"]
      },
      "executor": "tools/sequence-delete.ts",
      "execution_target": "host"
    },
    {
      "name": "sequence_enroll",
      "description": "Enroll one or more contacts into a sequence. Accepts comma-separated emails or an array.",
      "category": "sequences",
      "risk": "medium",
      "input_schema": {
        "type": "object",
        "properties": {
          "sequence_id": {
            "type": "string",
            "description": "Sequence ID to enroll contacts in"
          },
          "emails": {
            "description": "Email address(es) to enroll \u2014 comma-separated string or array",
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "context": {
            "type": "object",
            "description": "Optional context object with personalization variables for the enrolled contacts"
          }
        },
        "required": ["sequence_id", "emails"]
      },
      "executor": "tools/sequence-enroll.ts",
      "execution_target": "host"
    },
    {
      "name": "sequence_enrollment_list",
      "description": "List enrollments for a sequence, optionally filtered by status.",
      "category": "sequences",
      "risk": "low",
      "input_schema": {
        "type": "object",
        "properties": {
          "sequence_id": {
            "type": "string",
            "description": "Filter by sequence ID"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "paused",
              "completed",
              "replied",
              "cancelled",
              "failed"
            ],
            "description": "Filter by enrollment status"
          }
        }
      },
      "executor": "tools/sequence-enrollment-list.ts",
      "execution_target": "host"
    },
    {
      "name": "sequence_import",
      "description": "Import contacts from a CSV/TSV file and enroll them in a sequence. First call shows a preview; set auto_enroll=true to enroll.",
      "category": "sequences",
      "risk": "medium",
      "input_schema": {
        "type": "object",
        "properties": {
          "file_path": {
            "type": "string",
            "description": "Absolute path to the CSV/TSV file"
          },
          "sequence_id": {
            "type": "string",
            "description": "Sequence ID to enroll contacts in"
          },
          "auto_enroll": {
            "type": "boolean",
            "description": "Set to true to enroll contacts (default false = preview mode)"
          }
        },
        "required": ["file_path", "sequence_id"]
      },
      "executor": "tools/sequence-import.ts",
      "execution_target": "host"
    },
    {
      "name": "sequence_analytics",
      "description": "View sequence analytics dashboard with send/reply/completion metrics, per-step funnel, and recent activity.",
      "category": "sequences",
      "risk": "low",
      "input_schema": {
        "type": "object",
        "properties": {
          "sequence_id": {
            "type": "string",
            "description": "Optional sequence ID for detailed step funnel view"
          }
        }
      },
      "executor": "tools/sequence-analytics.ts",
      "execution_target": "host"
    }
  ]
}
