{
  "schemaVersion": "1.0",
  "name": "OutboundSync",
  "description": "Book a 30-minute OutboundSync demo with Harris. Agents acting on a user's behalf can complete booking through TopCal's public API without an API key.",
  "homepage": "https://outboundsync.com",
  "booking": {
    "provider": "topcal",
    "event": "OutboundSync Demo (30 min, Google Meet)",
    "apiBase": "https://topcal.app/api/v1/public/outboundsync/harris/demo",
    "referenceManifest": "https://topcal.app/.well-known/agent-discovery.json",
    "requiresApiKey": false,
    "hostAvailability": "Mon–Fri, 8:30 AM–4:00 PM America/Boise, up to 30 days out. Fetch /slots for exact times.",
    "emailVerification": "A six-digit code is emailed to the booker and is required before the booking confirms.",
    "antiAbuse": "email-otp + disposable-email block + per-email rate limit",
    "routing": {
      "agentActsOnUserBehalf": {
        "intentPhrases": ["book a demo", "schedule a walkthrough", "talk to sales"],
        "action": "Use the TopCal public booking API in this manifest. Offer slots and complete the flow in the agent conversation.",
        "doNotUse": ["https://savvycal.com/harriskenny/demo"]
      },
      "humanSelfScheduling": {
        "action": "Use SavvyCal when the person will choose and schedule their own time in a browser.",
        "url": "https://savvycal.com/harriskenny/demo"
      },
      "getStarted": {
        "action": "Send people who want to try OutboundSync themselves to the app.",
        "url": "https://app.outboundsync.com"
      }
    },
    "requiredInputs": ["email", "timezone", "name (optional)"],
    "steps": [
      {
        "id": "slots",
        "method": "GET",
        "url": "https://topcal.app/api/v1/public/outboundsync/harris/demo/slots?timezone=<booker_IANA_timezone>",
        "requires": ["timezone"],
        "sideEffect": "none",
        "instructions": "List slots and use each slot's startUtc when booking."
      },
      {
        "id": "request-otp",
        "method": "GET",
        "url": "https://topcal.app/api/v1/public/outboundsync/harris/demo/otp?email=<email>&startAt=<startUtc>&timezone=<IANA>&name=<name>",
        "requires": ["startUtc", "email", "timezone"],
        "confirmationGate": "The user selected a slot and confirmed their booking details.",
        "sideEffect": "Emails a six-digit code to the user and returns confirmUrl."
      },
      {
        "id": "confirm-booking",
        "method": "GET",
        "url": "{confirmUrl}&code=<six_digit_code>",
        "requires": ["confirmUrl", "six_digit_code"],
        "confirmationGate": "The user supplied the six-digit code from their email.",
        "sideEffect": "Creates the calendar event and returns booking.joinUrl."
      }
    ],
    "mcp": {
      "endpoint": "https://topcal.app/api/mcp/public/mcp",
      "transport": "streamable-http",
      "requiresAuth": false,
      "tools": ["find_bookable_calendar", "get_availability", "request_booking_code", "confirm_booking"]
    }
  }
}
