nyxtoolsdev avatar

Calendly Mcp Server

nyxtoolsdev/calendly-mcp-server

Connects Claude directly to your Calendly account via the Calendly API, letting you check availability, view scheduled events, search meetings by invitee, and inspect event types through natural language. The free tier covers read operations like listing upcoming meetings and checking busy times. Premium adds write capabilities including creating one-off scheduling links, canceling and rescheduling events, plus analytics on meeting patterns and invitee history. Useful when you're managing your calendar in conversation with Claude and want to skip opening the Calendly dashboard. Requires a Calendly Personal Access Token from your account's API settings.

tools
35
transport
STDIO
last updated
Mar 25, 2026

Tools

35 tools

Public tool metadata for what this MCP can expose to an agent.

users-get_current_userGet current user Returns basic information about your user account. <!-- theme: info --> > #### Required scopes: `users:read` :return: Returns the result object.

Get current user Returns basic information about your user account. <!-- theme: info --> > #### Required scopes: `users:read` :return: Returns the result object.

No parameter schema in public metadata yet.

users-get_userGet user Returns information about a specified User. <!-- theme: info --> > #### Required scopes: `users:read` :param uuid: User unique identifier, or the constant "me" to reference the caller (required) :type uuid: str :return: Returns the result object.1 params

Get user Returns information about a specified User. <!-- theme: info --> > #### Required scopes: `users:read` :param uuid: User unique identifier, or the constant "me" to reference the caller (required) :type uuid: str :return: Returns the result object.

Parameters* required
uuidstring
User unique identifier, or the constant "me" to reference the caller
event_types-create_event_typeCreate Event Type Create a new Event Type **NOTE:** * Currently, this endpoint only supports one-on-one event types (kind: "solo"). <!-- theme: info --> > #### Required scopes: `event_types:write` :param create_event_type_request: (required) :type create_event_type_request: Cr...1 params

Create Event Type Create a new Event Type **NOTE:** * Currently, this endpoint only supports one-on-one event types (kind: "solo"). <!-- theme: info --> > #### Required scopes: `event_types:write` :param create_event_type_request: (required) :type create_event_type_request: Cr...

Parameters* required
create_event_type_requestobject
CreateEventTypeRequest
event_types-update_event_typeUpdate Event Type Update an existing Event Type **NOTE:** * Currently, this endpoint only supports one-on-one event types (kind: "solo"). <!-- theme: info --> > #### Required scopes: `event_types:write` :param uuid: (required) :type uuid: str :param update_event_type_request:...2 params

Update Event Type Update an existing Event Type **NOTE:** * Currently, this endpoint only supports one-on-one event types (kind: "solo"). <!-- theme: info --> > #### Required scopes: `event_types:write` :param uuid: (required) :type uuid: str :param update_event_type_request:...

Parameters* required
update_event_type_requestobject
UpdateEventTypeRequest
uuidstring
event_types-list_event_typesList User's Event Types Returns all Event Types associated with a specified User. Use: * `organization` to look up all Event Types that belong to the organization * `user` to look up a user's Event Types in an organization Either `organization` or `user` are required query par...8 params

List User's Event Types Returns all Event Types associated with a specified User. Use: * `organization` to look up all Event Types that belong to the organization * `user` to look up a user's Event Types in an organization Either `organization` or `user` are required query par...

Parameters* required
activevalue
Return only active event types if true, only inactive if false, or all event types if this parameter is omitted.
admin_managedvalue
Return only admin managed event types if true, exclude admin managed event types if false, or include all event types if this parameter is omitted.
countvalue
The number of rows to return
organizationvalue
View available personal, team, and organization event types associated with the organization's URI.
page_tokenvalue
The token to pass to get the next or previous portion of the collection
sortvalue
Order results by the specified field and direction. Accepts comma-separated list of {field}:{direction} values.Supported fields are: name, position, created_at, updated_at. Sort direction is specif...
uservalue
View available personal, team, and organization event types associated with the user's URI.
user_availability_schedulevalue
Used in conjunction with `user` parameter, returns a filtered list of Event Types that use the given primary availability schedule.
event_types-get_event_typeGet Event Type Returns information about a specified Event Type. <!-- theme: info --> > #### Required scopes: `event_types:read` :param uuid: (required) :type uuid: str :return: Returns the result object.1 params

Get Event Type Returns information about a specified Event Type. <!-- theme: info --> > #### Required scopes: `event_types:read` :param uuid: (required) :type uuid: str :return: Returns the result object.

Parameters* required
uuidstring
event_types-list_event_type_available_timesList Event Type Available Times Returns a list of available times for an event type within a specified date range. Date range can be no greater than 1 week (7 days). **NOTE:** * This endpoint does not support traditional keyset pagination. <!-- theme: info --> > #### Required...3 params

List Event Type Available Times Returns a list of available times for an event type within a specified date range. Date range can be no greater than 1 week (7 days). **NOTE:** * This endpoint does not support traditional keyset pagination. <!-- theme: info --> > #### Required...

Parameters* required
end_timestring
End time of the requested availability range. Date must be in the future of start_time.
event_typestring
The uri associated with the event type
start_timestring
Start time of the requested availability range. Date cannot be in the past.
event_types-list_event_type_availability_scheduleList Event Type Availability Schedules Return the availability for an event type <!-- theme: info --> > #### Required scopes: `availability:read` :param event_type: The URI associated with the event type (required) :type event_type: str :return: Returns the result object.1 params

List Event Type Availability Schedules Return the availability for an event type <!-- theme: info --> > #### Required scopes: `availability:read` :param event_type: The URI associated with the event type (required) :type event_type: str :return: Returns the result object.

Parameters* required
event_typestring
The URI associated with the event type
event_types-update_event_type_availability_scheduleUpdate Event Type Availability Schedules Update an event type availability schedule <!-- theme: info --> > #### Required scopes: `availability:write` :param event_type: Event Type uri in which to update the availability schedule (required) :type event_type: str :param update_e...2 params

Update Event Type Availability Schedules Update an event type availability schedule <!-- theme: info --> > #### Required scopes: `availability:write` :param event_type: Event Type uri in which to update the availability schedule (required) :type event_type: str :param update_e...

Parameters* required
event_typestring
Event Type uri in which to update the availability schedule
update_event_type_availability_requestobject
UpdateEventTypeAvailabilityRequest
locations-list_user_meeting_locationsList User Meeting Locations Returns configured location information for a given user. <!-- theme: info --> > #### Required scopes: `locations:read` :param user: The URI associated with the user (required) :type user: str :return: Returns the result object.1 params

List User Meeting Locations Returns configured location information for a given user. <!-- theme: info --> > #### Required scopes: `locations:read` :param user: The URI associated with the user (required) :type user: str :return: Returns the result object.

Parameters* required
userstring
The URI associated with the user
meetings-list_eventsList Events Returns a list of Events. * Pass `organization` parameter to return events for that organization (requires admin/owner privilege) * Pass `user` parameter to return events for a specific User * Pass `group` parameter to return events for a specific Group (requires o...10 params

List Events Returns a list of Events. * Pass `organization` parameter to return events for that organization (requires admin/owner privilege) * Pass `user` parameter to return events for a specific User * Pass `group` parameter to return events for a specific Group (requires o...

Parameters* required
countvalue
The number of rows to return
groupvalue
Return events that are scheduled with the group associated with this URI
invitee_emailvalue
Return events that are scheduled with the invitee associated with this email address
max_start_timevalue
Include events with start times prior to this time (sample time format: "2020-01-02T03:04:05.678123Z"). This time should use the UTC timezone.
min_start_timevalue
Include events with start times after this time (sample time format: "2020-01-02T03:04:05.678123Z"). This time should use the UTC timezone.
organizationvalue
Return events that are scheduled with the organization associated with this URI
page_tokenvalue
The token to pass to get the next or previous portion of the collection
sortvalue
Order results by the specified field and direction. Accepts comma-separated list of {field}:{direction} values. Supported fields are: start_time. Sort direction is specified as: asc, desc.
statusvalue
Whether the scheduled event is `active` or `canceled`
uservalue
Return events that are scheduled with the user associated with this URI
meetings-get_eventGet Event Returns information about a specified Event. <!-- theme: info --> > #### Required scopes: `scheduled_events:read` :param uuid: The event's unique identifier (required) :type uuid: str :return: Returns the result object.1 params

Get Event Returns information about a specified Event. <!-- theme: info --> > #### Required scopes: `scheduled_events:read` :param uuid: The event's unique identifier (required) :type uuid: str :return: Returns the result object.

Parameters* required
uuidstring
The event's unique identifier
meetings-cancel_eventCancel Event Cancels specified event. <!-- theme: info --> > #### Required scopes: `scheduled_events:write` :param uuid: The event's unique indentifier (required) :type uuid: str :param create_scheduled_event_cancellation_request: Optional cancellation reason. :type create_sch...2 params

Cancel Event Cancels specified event. <!-- theme: info --> > #### Required scopes: `scheduled_events:write` :param uuid: The event's unique indentifier (required) :type uuid: str :param create_scheduled_event_cancellation_request: Optional cancellation reason. :type create_sch...

Parameters* required
create_scheduled_event_cancellation_requestvalue
Optional cancellation reason.
uuidstring
The event's unique indentifier
meetings-create_inviteeCreate Event Invitee Create a new Event Invitee. Standard notifications, calendar invites, reschedules, and workflows run as if booked via the Calendly UI. **NOTE:** * Access to this endpoint is limited to Calendly users on paid plans (Standard and above). Users on the Free pl...1 params

Create Event Invitee Create a new Event Invitee. Standard notifications, calendar invites, reschedules, and workflows run as if booked via the Calendly UI. **NOTE:** * Access to this endpoint is limited to Calendly users on paid plans (Standard and above). Users on the Free pl...

Parameters* required
post_invitee_requestobject
PostInviteeRequest
meetings-list_event_inviteesList Event Invitees Returns a list of Invitees for an event. <!-- theme: info --> > #### Required scopes: `scheduled_events:read` :param uuid: (required) :type uuid: str :param status: Indicates if the invitee "canceled" or still "active" :type status: str :param sort: Order r...6 params

List Event Invitees Returns a list of Invitees for an event. <!-- theme: info --> > #### Required scopes: `scheduled_events:read` :param uuid: (required) :type uuid: str :param status: Indicates if the invitee "canceled" or still "active" :type status: str :param sort: Order r...

Parameters* required
countvalue
The number of rows to return
emailvalue
Indicates if the results should be filtered by email address
page_tokenvalue
The token to pass to get the next or previous portion of the collection
sortvalue
Order results by the **created_at** field and direction specified: ascending ("asc") or descending ("desc")
statusvalue
Indicates if the invitee "canceled" or still "active"
uuidstring
meetings-get_event_inviteeGet Event Invitee Returns information about a specified Invitee (person invited to an event). <!-- theme: info --> > #### Required scopes: `scheduled_events:read` :param event_uuid: The event's unique identifier (required) :type event_uuid: str :param invitee_uuid: The invitee...2 params

Get Event Invitee Returns information about a specified Invitee (person invited to an event). <!-- theme: info --> > #### Required scopes: `scheduled_events:read` :param event_uuid: The event's unique identifier (required) :type event_uuid: str :param invitee_uuid: The invitee...

Parameters* required
event_uuidstring
The event's unique identifier
invitee_uuidstring
The invitee's unique identifier
scheduling_links-create_single_use_scheduling_linkCreate Single-Use Scheduling Link Creates a single-use scheduling link. <!-- theme: info --> > #### Required scopes: `scheduling_links:write` :param create_scheduling_link_request: (required) :type create_scheduling_link_request: CreateSchedulingLinkRequest :return: Returns th...1 params

Create Single-Use Scheduling Link Creates a single-use scheduling link. <!-- theme: info --> > #### Required scopes: `scheduling_links:write` :param create_scheduling_link_request: (required) :type create_scheduling_link_request: CreateSchedulingLinkRequest :return: Returns th...

Parameters* required
create_scheduling_link_requestobject
CreateSchedulingLinkRequest
availability-list_user_availability_schedulesList User Availability Schedules Returns the availability schedules of the given user. <!-- theme: info --> > #### Required scopes: `availability:read` :param user: A URI reference to a user (required) :type user: str :return: Returns the result object.1 params

List User Availability Schedules Returns the availability schedules of the given user. <!-- theme: info --> > #### Required scopes: `availability:read` :param user: A URI reference to a user (required) :type user: str :return: Returns the result object.

Parameters* required
userstring
A URI reference to a user
availability-get_user_availability_scheduleGet User Availability Schedule This will return the availability schedule of the given UUID. <!-- theme: info --> > #### Required scopes: `availability:read` :param uuid: The UUID of the availability schedule. (required) :type uuid: str :return: Returns the result object.1 params

Get User Availability Schedule This will return the availability schedule of the given UUID. <!-- theme: info --> > #### Required scopes: `availability:read` :param uuid: The UUID of the availability schedule. (required) :type uuid: str :return: Returns the result object.

Parameters* required
uuidstring
The UUID of the availability schedule.
availability-list_user_busy_timesList User Busy Times Returns an ascending list of user internal and external scheduled events within a specified date range. Date range can be no greater than 1 week (7 days). **NOTE:** * This endpoint does not support traditional keyset pagination. * External events will only...3 params

List User Busy Times Returns an ascending list of user internal and external scheduled events within a specified date range. Date range can be no greater than 1 week (7 days). **NOTE:** * This endpoint does not support traditional keyset pagination. * External events will only...

Parameters* required
end_timestring
End time of the requested availability range. Date must be in the future of start_time.
start_timestring
Start time of the requested availability range. Date cannot be in the past.
userstring
The uri associated with the user
meetings-create_invitee_no_showCreate Invitee No Show Marks an Invitee as a No Show. <!-- theme: info --> > #### Required scopes: `scheduled_events:write` :param create_invitee_no_show_request: (required) :type create_invitee_no_show_request: CreateInviteeNoShowRequest :return: Returns the result object.1 params

Create Invitee No Show Marks an Invitee as a No Show. <!-- theme: info --> > #### Required scopes: `scheduled_events:write` :param create_invitee_no_show_request: (required) :type create_invitee_no_show_request: CreateInviteeNoShowRequest :return: Returns the result object.

Parameters* required
create_invitee_no_show_requestobject
CreateInviteeNoShowRequest
meetings-get_invitee_no_showGet Invitee No Show Returns information about a specified Invitee No Show. <!-- theme: info --> > #### Required scopes: `scheduled_events:read` :param uuid: (required) :type uuid: str :return: Returns the result object.1 params

Get Invitee No Show Returns information about a specified Invitee No Show. <!-- theme: info --> > #### Required scopes: `scheduled_events:read` :param uuid: (required) :type uuid: str :return: Returns the result object.

Parameters* required
uuidstring
meetings-delete_invitee_no_showDelete Invitee No Show Undoes marking an Invitee as a No Show. <!-- theme: info --> > #### Required scopes: `scheduled_events:write` :param uuid: (required) :type uuid: str :return: Returns the result object.1 params

Delete Invitee No Show Undoes marking an Invitee as a No Show. <!-- theme: info --> > #### Required scopes: `scheduled_events:write` :param uuid: (required) :type uuid: str :return: Returns the result object.

Parameters* required
uuidstring
organizations-get_organizationGet Organization Returns the details of a specified Organization. <!-- theme: info --> > #### Required scopes: `organizations:read` :param uuid: The organization's unique identifier (required) :type uuid: str :return: Returns the result object.1 params

Get Organization Returns the details of a specified Organization. <!-- theme: info --> > #### Required scopes: `organizations:read` :param uuid: The organization's unique identifier (required) :type uuid: str :return: Returns the result object.

Parameters* required
uuidstring
The organization's unique identifier
organizations-list_organization_membershipsList Organization Memberships Use this to list the Organization Memberships for all users belonging to an organization, use: * `user` to look up a user's membership in an organization * `organization` to look up all users that belong to the organization This endpoint can also...6 params

List Organization Memberships Use this to list the Organization Memberships for all users belonging to an organization, use: * `user` to look up a user's membership in an organization * `organization` to look up all users that belong to the organization This endpoint can also...

Parameters* required
countvalue
The number of rows to return
emailvalue
Indicates if the results should be filtered by email address
organizationvalue
Indicates if the results should be filtered by organization
page_tokenvalue
The token to pass to get the next or previous portion of the collection
rolevalue
Indicates if the results should be filtered by role
uservalue
Indicates if the results should be filtered by user
organizations-get_organization_membershipGet Organization Membership Returns information about a user's Organization Membership <!-- theme: info --> > #### Required scopes: `organizations:read` :param uuid: The organization membership's unique identifier (required) :type uuid: str :return: Returns the result object.1 params

Get Organization Membership Returns information about a user's Organization Membership <!-- theme: info --> > #### Required scopes: `organizations:read` :param uuid: The organization membership's unique identifier (required) :type uuid: str :return: Returns the result object.

Parameters* required
uuidstring
The organization membership's unique identifier
organizations-delete_organization_membershipRemove User from Organization Removes a user from an organization. Notes: * To remove users, the caller must have admin rights for the organization * An organization owner can't be removed <!-- theme: info --> > #### Required scopes: `organizations:write` :param uuid: The orga...1 params

Remove User from Organization Removes a user from an organization. Notes: * To remove users, the caller must have admin rights for the organization * An organization owner can't be removed <!-- theme: info --> > #### Required scopes: `organizations:write` :param uuid: The orga...

Parameters* required
uuidstring
The organization membership's unique identifier
organizations-list_organization_invitationsList Organization Invitations Returns a list of Organization Invitations that were sent to the organization's members. <!-- theme: info --> > #### Required scopes: `organizations:read` :param uuid: The organization's unique identifier (required) :type uuid: str :param count: T...6 params

List Organization Invitations Returns a list of Organization Invitations that were sent to the organization's members. <!-- theme: info --> > #### Required scopes: `organizations:read` :param uuid: The organization's unique identifier (required) :type uuid: str :param count: T...

Parameters* required
countvalue
The number of rows to return
emailvalue
Indicates if the results should be filtered by email address
page_tokenvalue
The token to pass to get the next or previous portion of the collection
sortvalue
Order results by the field name and direction specified (ascending or descending). Returns multiple sets of results in a comma-separated list.
statusvalue
Indicates if the results should be filtered by status ("pending", "accepted", or "declined")
uuidstring
The organization's unique identifier
organizations-create_organization_invitationInvite User to Organization Invites a user to an organization. <!-- theme: info --> > #### Required scopes: `organizations:write` :param uuid: The organization's unique identifier (required) :type uuid: str :param create_organization_invitation_request: (required) :type create...2 params

Invite User to Organization Invites a user to an organization. <!-- theme: info --> > #### Required scopes: `organizations:write` :param uuid: The organization's unique identifier (required) :type uuid: str :param create_organization_invitation_request: (required) :type create...

Parameters* required
create_organization_invitation_requestobject
CreateOrganizationInvitationRequest
uuidstring
The organization's unique identifier
organizations-revoke_organization_invitationRevoke User's Organization Invitation Use this to revoke an Organization Invitation to an organization. Once revoked, the invitation link that was sent to the invitee is no longer valid. <!-- theme: info --> > #### Required scopes: `organizations:write` :param org_uuid: The or...2 params

Revoke User's Organization Invitation Use this to revoke an Organization Invitation to an organization. Once revoked, the invitation link that was sent to the invitee is no longer valid. <!-- theme: info --> > #### Required scopes: `organizations:write` :param org_uuid: The or...

Parameters* required
org_uuidstring
The organization’s unique identifier
uuidstring
The organization invitation's unique identifier
routing_forms-list_routing_formsList Routing Forms Get a list of Routing Forms for a specified Organization. <!-- theme: info --> > #### Required scopes: `routing_forms:read` :param organization: View organization routing forms associated with the organization's URI. (required) :type organization: str :param...4 params

List Routing Forms Get a list of Routing Forms for a specified Organization. <!-- theme: info --> > #### Required scopes: `routing_forms:read` :param organization: View organization routing forms associated with the organization's URI. (required) :type organization: str :param...

Parameters* required
countvalue
The number of rows to return
organizationstring
View organization routing forms associated with the organization's URI.
page_tokenvalue
The token to pass to get the next or previous portion of the collection
sortvalue
Order results by the specified field and direction. Accepts comma-separated list of {field}:{direction} values. Supported fields are: created_at. Sort direction is specified as: asc, desc.
routing_forms-get_routing_formGet Routing Form Get a specified Routing Form. <!-- theme: info --> > #### Required scopes: `routing_forms:read` :param uuid: (required) :type uuid: str :return: Returns the result object.1 params

Get Routing Form Get a specified Routing Form. <!-- theme: info --> > #### Required scopes: `routing_forms:read` :param uuid: (required) :type uuid: str :return: Returns the result object.

Parameters* required
uuidstring
routing_forms-list_routing_form_submissionsList Routing Form Submissions Get a list of Routing Form Submissions for a specified Routing Form. <!-- theme: info --> > #### Required scopes: `routing_forms:read` :param form: View routing form submissions associated with the routing form's URI. (required) :type form: str :p...4 params

List Routing Form Submissions Get a list of Routing Form Submissions for a specified Routing Form. <!-- theme: info --> > #### Required scopes: `routing_forms:read` :param form: View routing form submissions associated with the routing form's URI. (required) :type form: str :p...

Parameters* required
countvalue
The number of rows to return
formstring
View routing form submissions associated with the routing form's URI.
page_tokenvalue
The token to pass to get the next or previous portion of the collection
sortvalue
Order results by the specified field and direction. Accepts comma-separated list of {field}:{direction} values. Supported fields are: created_at. Sort direction is specified as: asc, desc.
routing_forms-get_routing_form_submissionGet Routing Form Submission Get a specified Routing Form Submission. <!-- theme: info --> > #### Required scopes: `routing_forms:read` :param uuid: (required) :type uuid: str :return: Returns the result object.1 params

Get Routing Form Submission Get a specified Routing Form Submission. <!-- theme: info --> > #### Required scopes: `routing_forms:read` :param uuid: (required) :type uuid: str :return: Returns the result object.

Parameters* required
uuidstring
shares-create_shareCreate Share Endpoint for our [Customize Once and Share](https://help.calendly.com/hc/en-us/articles/10594902199191) feature. This allows you to customize events for a specific invitee without needing to make an entirely new event type. ***This feature is only available for on...1 params

Create Share Endpoint for our [Customize Once and Share](https://help.calendly.com/hc/en-us/articles/10594902199191) feature. This allows you to customize events for a specific invitee without needing to make an entirely new event type. ***This feature is only available for on...

Parameters* required
create_share_requestobject
CreateShareRequest

Sponsors

Readme

Calendly MCP Server

An MCP (Model Context Protocol) server that connects Claude Desktop and Claude Code to your Calendly account, enabling natural-language scheduling management.

Installation

pip install calendly-mcp

Getting a Calendly Personal Access Token

  1. Log in to Calendly
  2. Go to Settings > Integrations & Apps
  3. Scroll to API & Connectors and click API
  4. Click Get a token now (or Generate New Token)
  5. Give the token a name (e.g., "Claude MCP") and click Create Token
  6. Copy the token immediately -- it will not be shown again

Configuration

Claude Desktop

Add the following to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "calendly": {
      "command": "calendly-mcp",
      "env": {
        "CALENDLY_ACCESS_TOKEN": "your-token-here",
        "LICENSE_KEY": "optional-premium-key"
      }
    }
  }
}

Claude Code


View the full README on GitHub

Details

Repository
github.com/nyxtoolsdev/calendly-mcp-server
Category
Automation & Workflows
Package
calendly-mcp
Transport
STDIO
Registry
MCP registry, active

More from nyxtoolsdev

Related Automation & Workflows MCP servers

View all
1pixel-aly avatarEverAlice Studiopixel-aly/everalice-ai-mcpAI listing workflow for Etsy sellers: listings, images, mockups, KDP copy & ad copy. 14 tools.0stars
2robinhood avatarRobinhood (Agentic Trading)robinhoodOfficial Robinhood MCP server for agentic trading. Connect any AI agent to a dedicated, sandboxed Agentic account: it can read your accounts, positions, and ord0stars
3rocnubie avatarVoxtral TTS MCProcnubie/voxtraltts-mcpExplore Voxtral TTS with API notes, setup guidance, use cases, workflow tips, and FAQ answers for0stars
4www avatarToolssite.jiebang.www/tools20 free dev tools: JSON/YAML, XML/SQL, Cron, SEO, QR code, URL shortener, cron tasks, files0stars
5smythmyke avatarGovtoolspro Mcp Serversmythmyke/govtoolspro-mcp-serverWorkflow tools for federal contractors: go/no-go scoring, incumbent intel, recompete, NECO.0stars
6unbearabledev avatarGitHub Actions Auditunbearabledev/github-actions-auditGitHub Actions workflow security audit - 21 checks: pinning, permissions, secrets, injection.0stars