{
  "schemaVersion": "1.0",
  "item": {
    "slug": "cal-com-automation",
    "name": "Cal Com Automation",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/sohamganatra/cal-com-automation",
    "canonicalUrl": "https://clawhub.ai/sohamganatra/cal-com-automation",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/cal-com-automation",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=cal-com-automation",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/cal-com-automation"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/cal-com-automation",
    "agentPageUrl": "https://openagent3.xyz/skills/cal-com-automation/agent",
    "manifestUrl": "https://openagent3.xyz/skills/cal-com-automation/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/cal-com-automation/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Cal.com Automation via Rube MCP",
        "body": "Automate Cal.com scheduling operations through Composio's Cal toolkit via Rube MCP."
      },
      {
        "title": "Prerequisites",
        "body": "Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\nActive Cal.com connection via RUBE_MANAGE_CONNECTIONS with toolkit cal\nAlways call RUBE_SEARCH_TOOLS first to get current tool schemas"
      },
      {
        "title": "Setup",
        "body": "Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\nVerify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds\nCall RUBE_MANAGE_CONNECTIONS with toolkit cal\nIf connection is not ACTIVE, follow the returned auth link to complete Cal.com authentication\nConfirm connection status shows ACTIVE before running any workflows"
      },
      {
        "title": "1. Manage Bookings",
        "body": "When to use: User wants to list, create, or review bookings\n\nTool sequence:\n\nCAL_FETCH_ALL_BOOKINGS - List all bookings with filters [Required]\nCAL_POST_NEW_BOOKING_REQUEST - Create a new booking [Optional]\n\nKey parameters for listing:\n\nstatus: Filter by booking status ('upcoming', 'recurring', 'past', 'cancelled', 'unconfirmed')\nafterStart: Filter bookings after this date (ISO 8601)\nbeforeEnd: Filter bookings before this date (ISO 8601)\n\nKey parameters for creation:\n\neventTypeId: Event type ID for the booking\nstart: Booking start time (ISO 8601)\nend: Booking end time (ISO 8601)\nname: Attendee name\nemail: Attendee email\ntimeZone: Attendee timezone (IANA format)\nlanguage: Attendee language code\nmetadata: Additional metadata object\n\nPitfalls:\n\nDate filters use ISO 8601 format with timezone (e.g., '2024-01-15T09:00:00Z')\neventTypeId must reference a valid, active event type\nBooking creation requires matching an available slot; check availability first\nTime zone must be a valid IANA timezone string (e.g., 'America/New_York')\nStatus filter values are specific strings; invalid values return empty results"
      },
      {
        "title": "2. Check Availability",
        "body": "When to use: User wants to find free/busy times or available booking slots\n\nTool sequence:\n\nCAL_RETRIEVE_CALENDAR_BUSY_TIMES - Get busy time blocks [Required]\nCAL_GET_AVAILABLE_SLOTS_INFO - Get specific available slots [Required]\n\nKey parameters:\n\ndateFrom: Start date for availability check (YYYY-MM-DD)\ndateTo: End date for availability check (YYYY-MM-DD)\neventTypeId: Event type to check slots for\ntimeZone: Timezone for the availability response\nloggedInUsersTz: Timezone of the requesting user\n\nPitfalls:\n\nBusy times show when the user is NOT available\nAvailable slots are specific to an event type's duration and configuration\nDate range should be reasonable (not months in advance) to get accurate results\nTimezone affects how slots are displayed; always specify explicitly\nAvailability reflects calendar integrations (Google Calendar, Outlook, etc.)"
      },
      {
        "title": "3. Configure Webhooks",
        "body": "When to use: User wants to set up or manage webhook notifications for booking events\n\nTool sequence:\n\nCAL_RETRIEVE_WEBHOOKS_LIST - List existing webhooks [Required]\nCAL_GET_WEBHOOK_BY_ID - Get specific webhook details [Optional]\nCAL_UPDATE_WEBHOOK_BY_ID - Update webhook configuration [Optional]\nCAL_DELETE_WEBHOOK_BY_ID - Remove a webhook [Optional]\n\nKey parameters:\n\nid: Webhook ID for GET/UPDATE/DELETE operations\nsubscriberUrl: Webhook endpoint URL\neventTriggers: Array of event types to trigger on\nactive: Whether the webhook is active\nsecret: Webhook signing secret\n\nPitfalls:\n\nWebhook URLs must be publicly accessible HTTPS endpoints\nEvent triggers include: 'BOOKING_CREATED', 'BOOKING_RESCHEDULED', 'BOOKING_CANCELLED', etc.\nInactive webhooks do not fire; toggle active to enable/disable\nWebhook secrets are used for payload signature verification"
      },
      {
        "title": "4. Manage Teams",
        "body": "When to use: User wants to create, view, or manage teams and team event types\n\nTool sequence:\n\nCAL_GET_TEAMS_LIST - List all teams [Required]\nCAL_GET_TEAM_INFORMATION_BY_TEAM_ID - Get specific team details [Optional]\nCAL_CREATE_TEAM_IN_ORGANIZATION - Create a new team [Optional]\nCAL_RETRIEVE_TEAM_EVENT_TYPES - List event types for a team [Optional]\n\nKey parameters:\n\nteamId: Team identifier\nname: Team name (for creation)\nslug: URL-friendly team identifier\n\nPitfalls:\n\nTeam creation may require organization-level permissions\nTeam event types are separate from personal event types\nTeam slugs must be URL-safe and unique within the organization"
      },
      {
        "title": "5. Organization Management",
        "body": "When to use: User wants to view organization details\n\nTool sequence:\n\nCAL_GET_ORGANIZATION_ID - Get the organization ID [Required]\n\nKey parameters: (none required)\n\nPitfalls:\n\nOrganization ID is needed for team creation and org-level operations\nNot all Cal.com accounts have organizations; personal plans may return errors"
      },
      {
        "title": "Booking Creation Flow",
        "body": "1. Call CAL_GET_AVAILABLE_SLOTS_INFO to find open slots\n2. Present available times to the user\n3. Call CAL_POST_NEW_BOOKING_REQUEST with selected slot\n4. Confirm booking creation response"
      },
      {
        "title": "ID Resolution",
        "body": "Team name -> Team ID:\n\n1. Call CAL_GET_TEAMS_LIST\n2. Find team by name in response\n3. Extract id field"
      },
      {
        "title": "Webhook Setup",
        "body": "1. Call CAL_RETRIEVE_WEBHOOKS_LIST to check existing hooks\n2. Create or update webhook with desired triggers\n3. Verify webhook fires on test booking"
      },
      {
        "title": "Known Pitfalls",
        "body": "Date/Time Formats:\n\nBooking times: ISO 8601 with timezone (e.g., '2024-01-15T09:00:00Z')\nAvailability dates: YYYY-MM-DD format\nAlways specify timezone explicitly to avoid confusion\n\nEvent Types:\n\nEvent type IDs are numeric integers\nEvent types define duration, location, and booking rules\nDisabled event types cannot accept new bookings\n\nPermissions:\n\nTeam operations require team membership or admin access\nOrganization operations require org-level permissions\nWebhook management requires appropriate access level\n\nRate Limits:\n\nCal.com API has rate limits per API key\nImplement backoff on 429 responses"
      },
      {
        "title": "Quick Reference",
        "body": "TaskTool SlugKey ParamsList bookingsCAL_FETCH_ALL_BOOKINGSstatus, afterStart, beforeEndCreate bookingCAL_POST_NEW_BOOKING_REQUESTeventTypeId, start, end, name, emailGet busy timesCAL_RETRIEVE_CALENDAR_BUSY_TIMESdateFrom, dateToGet available slotsCAL_GET_AVAILABLE_SLOTS_INFOeventTypeId, dateFrom, dateToList webhooksCAL_RETRIEVE_WEBHOOKS_LIST(none)Get webhookCAL_GET_WEBHOOK_BY_IDidUpdate webhookCAL_UPDATE_WEBHOOK_BY_IDid, subscriberUrl, eventTriggersDelete webhookCAL_DELETE_WEBHOOK_BY_IDidList teamsCAL_GET_TEAMS_LIST(none)Get teamCAL_GET_TEAM_INFORMATION_BY_TEAM_IDteamIdCreate teamCAL_CREATE_TEAM_IN_ORGANIZATIONname, slugTeam event typesCAL_RETRIEVE_TEAM_EVENT_TYPESteamIdGet org IDCAL_GET_ORGANIZATION_ID(none)"
      }
    ],
    "body": "Cal.com Automation via Rube MCP\n\nAutomate Cal.com scheduling operations through Composio's Cal toolkit via Rube MCP.\n\nPrerequisites\nRube MCP must be connected (RUBE_SEARCH_TOOLS available)\nActive Cal.com connection via RUBE_MANAGE_CONNECTIONS with toolkit cal\nAlways call RUBE_SEARCH_TOOLS first to get current tool schemas\nSetup\n\nGet Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\nVerify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds\nCall RUBE_MANAGE_CONNECTIONS with toolkit cal\nIf connection is not ACTIVE, follow the returned auth link to complete Cal.com authentication\nConfirm connection status shows ACTIVE before running any workflows\nCore Workflows\n1. Manage Bookings\n\nWhen to use: User wants to list, create, or review bookings\n\nTool sequence:\n\nCAL_FETCH_ALL_BOOKINGS - List all bookings with filters [Required]\nCAL_POST_NEW_BOOKING_REQUEST - Create a new booking [Optional]\n\nKey parameters for listing:\n\nstatus: Filter by booking status ('upcoming', 'recurring', 'past', 'cancelled', 'unconfirmed')\nafterStart: Filter bookings after this date (ISO 8601)\nbeforeEnd: Filter bookings before this date (ISO 8601)\n\nKey parameters for creation:\n\neventTypeId: Event type ID for the booking\nstart: Booking start time (ISO 8601)\nend: Booking end time (ISO 8601)\nname: Attendee name\nemail: Attendee email\ntimeZone: Attendee timezone (IANA format)\nlanguage: Attendee language code\nmetadata: Additional metadata object\n\nPitfalls:\n\nDate filters use ISO 8601 format with timezone (e.g., '2024-01-15T09:00:00Z')\neventTypeId must reference a valid, active event type\nBooking creation requires matching an available slot; check availability first\nTime zone must be a valid IANA timezone string (e.g., 'America/New_York')\nStatus filter values are specific strings; invalid values return empty results\n2. Check Availability\n\nWhen to use: User wants to find free/busy times or available booking slots\n\nTool sequence:\n\nCAL_RETRIEVE_CALENDAR_BUSY_TIMES - Get busy time blocks [Required]\nCAL_GET_AVAILABLE_SLOTS_INFO - Get specific available slots [Required]\n\nKey parameters:\n\ndateFrom: Start date for availability check (YYYY-MM-DD)\ndateTo: End date for availability check (YYYY-MM-DD)\neventTypeId: Event type to check slots for\ntimeZone: Timezone for the availability response\nloggedInUsersTz: Timezone of the requesting user\n\nPitfalls:\n\nBusy times show when the user is NOT available\nAvailable slots are specific to an event type's duration and configuration\nDate range should be reasonable (not months in advance) to get accurate results\nTimezone affects how slots are displayed; always specify explicitly\nAvailability reflects calendar integrations (Google Calendar, Outlook, etc.)\n3. Configure Webhooks\n\nWhen to use: User wants to set up or manage webhook notifications for booking events\n\nTool sequence:\n\nCAL_RETRIEVE_WEBHOOKS_LIST - List existing webhooks [Required]\nCAL_GET_WEBHOOK_BY_ID - Get specific webhook details [Optional]\nCAL_UPDATE_WEBHOOK_BY_ID - Update webhook configuration [Optional]\nCAL_DELETE_WEBHOOK_BY_ID - Remove a webhook [Optional]\n\nKey parameters:\n\nid: Webhook ID for GET/UPDATE/DELETE operations\nsubscriberUrl: Webhook endpoint URL\neventTriggers: Array of event types to trigger on\nactive: Whether the webhook is active\nsecret: Webhook signing secret\n\nPitfalls:\n\nWebhook URLs must be publicly accessible HTTPS endpoints\nEvent triggers include: 'BOOKING_CREATED', 'BOOKING_RESCHEDULED', 'BOOKING_CANCELLED', etc.\nInactive webhooks do not fire; toggle active to enable/disable\nWebhook secrets are used for payload signature verification\n4. Manage Teams\n\nWhen to use: User wants to create, view, or manage teams and team event types\n\nTool sequence:\n\nCAL_GET_TEAMS_LIST - List all teams [Required]\nCAL_GET_TEAM_INFORMATION_BY_TEAM_ID - Get specific team details [Optional]\nCAL_CREATE_TEAM_IN_ORGANIZATION - Create a new team [Optional]\nCAL_RETRIEVE_TEAM_EVENT_TYPES - List event types for a team [Optional]\n\nKey parameters:\n\nteamId: Team identifier\nname: Team name (for creation)\nslug: URL-friendly team identifier\n\nPitfalls:\n\nTeam creation may require organization-level permissions\nTeam event types are separate from personal event types\nTeam slugs must be URL-safe and unique within the organization\n5. Organization Management\n\nWhen to use: User wants to view organization details\n\nTool sequence:\n\nCAL_GET_ORGANIZATION_ID - Get the organization ID [Required]\n\nKey parameters: (none required)\n\nPitfalls:\n\nOrganization ID is needed for team creation and org-level operations\nNot all Cal.com accounts have organizations; personal plans may return errors\nCommon Patterns\nBooking Creation Flow\n1. Call CAL_GET_AVAILABLE_SLOTS_INFO to find open slots\n2. Present available times to the user\n3. Call CAL_POST_NEW_BOOKING_REQUEST with selected slot\n4. Confirm booking creation response\n\nID Resolution\n\nTeam name -> Team ID:\n\n1. Call CAL_GET_TEAMS_LIST\n2. Find team by name in response\n3. Extract id field\n\nWebhook Setup\n1. Call CAL_RETRIEVE_WEBHOOKS_LIST to check existing hooks\n2. Create or update webhook with desired triggers\n3. Verify webhook fires on test booking\n\nKnown Pitfalls\n\nDate/Time Formats:\n\nBooking times: ISO 8601 with timezone (e.g., '2024-01-15T09:00:00Z')\nAvailability dates: YYYY-MM-DD format\nAlways specify timezone explicitly to avoid confusion\n\nEvent Types:\n\nEvent type IDs are numeric integers\nEvent types define duration, location, and booking rules\nDisabled event types cannot accept new bookings\n\nPermissions:\n\nTeam operations require team membership or admin access\nOrganization operations require org-level permissions\nWebhook management requires appropriate access level\n\nRate Limits:\n\nCal.com API has rate limits per API key\nImplement backoff on 429 responses\nQuick Reference\nTask\tTool Slug\tKey Params\nList bookings\tCAL_FETCH_ALL_BOOKINGS\tstatus, afterStart, beforeEnd\nCreate booking\tCAL_POST_NEW_BOOKING_REQUEST\teventTypeId, start, end, name, email\nGet busy times\tCAL_RETRIEVE_CALENDAR_BUSY_TIMES\tdateFrom, dateTo\nGet available slots\tCAL_GET_AVAILABLE_SLOTS_INFO\teventTypeId, dateFrom, dateTo\nList webhooks\tCAL_RETRIEVE_WEBHOOKS_LIST\t(none)\nGet webhook\tCAL_GET_WEBHOOK_BY_ID\tid\nUpdate webhook\tCAL_UPDATE_WEBHOOK_BY_ID\tid, subscriberUrl, eventTriggers\nDelete webhook\tCAL_DELETE_WEBHOOK_BY_ID\tid\nList teams\tCAL_GET_TEAMS_LIST\t(none)\nGet team\tCAL_GET_TEAM_INFORMATION_BY_TEAM_ID\tteamId\nCreate team\tCAL_CREATE_TEAM_IN_ORGANIZATION\tname, slug\nTeam event types\tCAL_RETRIEVE_TEAM_EVENT_TYPES\tteamId\nGet org ID\tCAL_GET_ORGANIZATION_ID\t(none)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/sohamganatra/cal-com-automation",
    "publisherUrl": "https://clawhub.ai/sohamganatra/cal-com-automation",
    "owner": "sohamganatra",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/cal-com-automation",
    "downloadUrl": "https://openagent3.xyz/downloads/cal-com-automation",
    "agentUrl": "https://openagent3.xyz/skills/cal-com-automation/agent",
    "manifestUrl": "https://openagent3.xyz/skills/cal-com-automation/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/cal-com-automation/agent.md"
  }
}