{
  "name": "Cancel Hansel MCP",
  "description": "Model Context Protocol manifest for Cancel Hansel booking evidence and protection APIs.",
  "version": "0.2.0",
  "transport": "streamable-http",
  "url": "https://api.cancelhansel.com/mcp",
  "tools": [
    {
      "name": "register_partner",
      "description": "Register a new partner account for Cancel Hansel.",
      "input_schema": {
        "type": "object",
        "properties": {
          "name": { "type": "string", "description": "Company or platform name." },
          "businessType": { "type": "string", "description": "Type of business, such as Booking Marketplace or Venue Operator." },
          "contactEmail": { "type": "string", "format": "email", "description": "Primary contact email." },
          "website": { "type": "string", "format": "uri", "description": "Company website." }
        },
        "required": ["name", "businessType", "contactEmail"]
      },
      "output": "Confirmation of partner account creation with partnerId, name, and status."
    },
    {
      "name": "create_booking",
      "description": "Create a protected booking record for a partner.",
      "input_schema": {
        "type": "object",
        "properties": {
          "partnerId": { "type": "string", "description": "Partner ID." },
          "talent": {
            "type": "object",
            "properties": { "id": { "type": "string" }, "name": { "type": "string" } },
            "required": ["id", "name"]
          },
          "organizer": {
            "type": "object",
            "properties": { "id": { "type": "string" }, "name": { "type": "string" } },
            "required": ["id", "name"]
          },
          "eventType": { "type": "string", "description": "Event or booking type." },
          "eventDate": { "type": "string", "format": "date-time", "description": "Scheduled event date/time." },
          "bookingValue": { "type": "number", "description": "Booking value." },
          "currency": { "type": "string", "description": "Currency code." }
        },
        "required": ["partnerId", "talent", "organizer", "eventType", "eventDate", "bookingValue"]
      },
      "output": "A booking record identifier and status indicating the record was created."
    },
    {
      "name": "protect_booking",
      "description": "Mark a booking as protected and generate a tamper-evident record.",
      "input_schema": {
        "type": "object",
        "properties": {
          "bookingId": { "type": "string", "description": "Booking ID to protect." }
        },
        "required": ["bookingId"]
      },
      "output": "Booking protection status with timestamps and confirmation that evidence protection is enabled."
    },
    {
      "name": "get_booking",
      "description": "Retrieve full details of a protected booking record.",
      "input_schema": {
        "type": "object",
        "properties": {
          "bookingId": { "type": "string", "description": "Booking ID to retrieve." }
        },
        "required": ["bookingId"]
      },
      "output": "Booking metadata including partner, event, status, protected state, and timestamps."
    },
    {
      "name": "get_webhook_events",
      "description": "Retrieve lifecycle events and webhook delivery status for a booking.",
      "input_schema": {
        "type": "object",
        "properties": {
          "bookingId": { "type": "string", "description": "Booking ID to fetch events for." }
        },
        "required": ["bookingId"]
      },
      "output": "A list of webhook event records with delivery status, event type, and payload metadata."
    },
    {
      "name": "retry_webhook",
      "description": "Retry delivery of a failed webhook event.",
      "input_schema": {
        "type": "object",
        "properties": {
          "eventId": { "type": "string", "description": "Webhook event ID to retry." }
        },
        "required": ["eventId"]
      },
      "output": "Retry status with eventId, retry count, and current delivery state."
    },
    {
      "name": "get_policy_evaluation",
      "description": "Retrieve policy evaluation results for a booking's cancellation or dispute review.",
      "input_schema": {
        "type": "object",
        "properties": {
          "bookingId": { "type": "string", "description": "Booking ID to evaluate." }
        },
        "required": ["bookingId"]
      },
      "output": "Policy evaluation summary with status, decision path, and timestamp."
    },
    {
      "name": "generate_evidence_packet",
      "description": "Generate a dispute-ready evidence packet for a booking.",
      "input_schema": {
        "type": "object",
        "properties": {
          "bookingId": { "type": "string", "description": "Booking ID for evidence packet." },
          "format": { "type": "string", "enum": ["json","pdf"], "description": "Requested evidence packet format." }
        },
        "required": ["bookingId"]
      },
      "output": "Evidence packet location and metadata for protected booking evidence exports."
    }
  ]
}