---
title: "Knock MCP server for AI agents - actionlake"
description: "Give Claude 118 Knock actions through one MCP server: users, objects, messages, tenants. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/knock
updated: 2026-10-23
---

Connectors · Email & messaging

# Knock MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Knock and the rest of your systems. It gives your agent 118 Knock actions (39 reads, 58 writes and 21 that wait for a confirmation) and holds the Knock credential itself, so the agent never does. It paces Knock's limits and records every call.

[Connect Knock free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "knock.users.list_users",
  intent: "check which Knock account is connected"
}
# List users · read · 1 upstream call
```

- 118 actions in one signed file
- 39 read look, never change
- 58 write create and update
- 21 wait for a yes destructive, confirmed first

Set up

## Connect Knock in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect Knock.
   Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `secret_key` Knock secret API key (sk_...)
   ```
   account { op: "connections.requirements", service: "knock" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "knock.users.list_users" }
   # list users · read · 1 upstream call
   check { action: "knock.schedules.create_schedules", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Knock at a glance

**Sign-in**

Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.

**You provide**

`secret_key`

**Limits we pace to**

60 calls a second, per connection

**API covered**

Knock API v1 (OpenAPI 3, api.knock.app)`api.knock.app`

**Built from**

Knock's documentation, read 23 October 2026[docs.knock.app](https://docs.knock.app/openapi.json) [docs.knock.app](https://docs.knock.app/api-reference)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

29 of 39 reads, for up to 5 minutes; a write clears what it affects

**Shared entities**

2, so ask can line Knock up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in Knock.

118 actions in 12 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **39** read look, never change
- **58** write create and update
- **21** destructive wait for a confirmation

1. ### Users
   37
   12 read · 20 write · 5 destructive
   List users · Get user · Delete user · Merge users
2. ### Objects
   26
   8 read · 12 write · 6 destructive
   Add subscriptions · Bulk add subscriptions · List messages · List preference sets
3. ### Messages
   25
   7 read · 18 write · 0 destructive
   List messages · List delivery logs · Get message · Batch get message contents
4. ### Tenants
   6
   2 read · 2 write · 2 destructive
   List tenants · Get a tenant · Delete a tenant · Bulk delete tenants
5. ### Schedules
   5
   1 read · 3 write · 1 destructive
   List schedules · Create schedules · Update schedules · Delete schedules
6. ### MS teams
   4
   3 read · 0 write · 1 destructive
   Microsoft Teams: List channels · Microsoft Teams: List teams · Microsoft Teams: Check auth · Microsoft Teams: Revoke access
7. ### Workflows
   4
   0 read · 0 write · 4 destructive
   Cancel workflow · Trigger workflow · Trigger workflow · Cancel workflow
8. ### Audiences
   3
   1 read · 1 write · 1 destructive
   List members · Add members · Remove members

**4 more areas · 8 actions**

- Slack **3**
- Integrations **2**
- Workflow recipient runs **2**
- Bulk operations **1**

Top actions

## The Knock API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 20 of Knock's 20 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `knock.users.list_users` List users | List users. | read | `identity.user.list` 474 connectors |
| `knock.users.get_user` Get user | Get user. | read | `identity.user.get` 399 connectors |
| `knock.messages.list_messages` List messages | List messages. | read | `comm.message.list` 42 connectors |
| `knock.audiences.list_audience_members` List members | List members. | read | `comm.audience_member.list` 23 connectors |
| `knock.messages.list_message_delivery_logs` List delivery logs | List delivery logs. | read | `comm.delivery_event.list` 16 connectors |
| `knock.messages.get_message` Get message | Get message. | read | `comm.message.get` 33 connectors |
| `knock.schedules.list_schedules` List schedules | List schedules. | read | `automation.schedule.list` 18 connectors |
| `knock.tenants.list_tenants` List tenants | List tenants. | read | `platform.tenant.list` 70 connectors |
| `knock.schedules.create_schedules` Create schedules | Create schedules. | write | `automation.schedule.create` 16 connectors |
| `knock.audiences.add_audience_members` Add members | Add members. | write | `comm.audience_member.add` 18 connectors |
| `knock.schedules.update_schedules` Update schedules | Update schedules. | write | `automation.schedule.update` 16 connectors |
| `knock.workflows.cancel_workflow` Cancel workflow | Cancel workflow. | destructive | `automation.workflow_run.cancel` 16 connectors |

Try it

## Prompts to paste into Claude.

Each one names the Knock actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Who has access in Knock? List every user and their role.
   calls `knock.users.list_users`
2. Write write
   Create schedules in Knock. Show me exactly what you will send before you save it.
   calls `knock.schedules.create_schedules`

Governance for Knock

## Destructive actions wait for a yes.

21 Knock actions are destructive. These are all of them:

- Delete user `knock.users.delete_user`
- Remove members `knock.audiences.remove_audience_members`
- Delete schedules `knock.schedules.delete_schedules`
- Merge users `knock.users.merge_user`
- Cancel workflow `knock.workflows.cancel_workflow`
- Delete a tenant `knock.tenants.delete_tenant`
- Slack: Revoke access `knock.slack.revoke_access`
- Delete an object `knock.objects.delete_object`
- Microsoft Teams: Revoke access `knock.ms_teams.revoke_access`
- Bulk delete users `knock.users.bulk_delete_users`
- Trigger workflow `knock.workflows.trigger_workflow`
- Bulk delete objects `knock.objects.bulk_delete_objects`
- Bulk delete tenants `knock.tenants.bulk_delete_tenants`
- Unset channel data `knock.users.unset_user_channel_data`
- Delete user preference set `knock.users.delete_user_preference_set`
- Bulk delete subscriptions `knock.objects.bulk_delete_subscriptions`
- Unset channel data `knock.objects.unset_object_channel_data`
- Trigger workflow `knock.workflows.trigger_workflow_by_name`
- Delete object preference set `knock.objects.delete_object_preference_set`
- Delete subscriptions `knock.objects.delete_subscriptions_for_object`
- Cancel workflow `knock.workflows.cancel_workflow_by_name`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do knock.users.delete_user confirm_policy: **human**

Delete user?

**intent:** the user asked me to delete user

run suspended · waiting for a named person · key _knock-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "knock-agent",
  allowed_actions: ["knock.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "knock.users.delete_user", approver: "lead@example.com" },
    { match: "knock.audiences.remove_audience_members", approver: "lead@example.com" },
    { match: "knock.schedules.delete_schedules", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to Knock only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What Knock costs on actionlake.

Every Knock action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Knock refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 118 Knock actions
- 118 actions page each page of a long list is one call
- 29 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Knock action.

118 actions by area: the id your agent calls, what it does, and its effect.

**Users 37**

- `knock.users.bulk_delete_users` Bulk delete users destructive
- `knock.users.bulk_identify_users` Bulk identify users write
- `knock.users.bulk_set_user_preferences` Bulk set preferences write
- `knock.users.delete_user` Delete user destructive
- `knock.users.delete_user_preference_set` Delete user preference set destructive
- `knock.users.generate_preference_center_signed_url` Create preference center signed URL write
- `knock.users.get_preference_center_config` Get preference center config read
- `knock.users.get_user` Get user read
- `knock.users.get_user_channel_data` Get channel data read
- `knock.users.get_user_in_app_feed_settings` Get feed settings read
- `knock.users.get_user_preference_set` Get user preference set read
- `knock.users.identify_user` Identify user write
- `knock.users.list_guides` List guides read
- `knock.users.list_messages_for_user` List user messages read
- `knock.users.list_subscriptions_for_user` List user subscriptions read
- `knock.users.list_user_in_app_feed_items` List feed items read
- `knock.users.list_user_preference_sets` List user preference sets read
- `knock.users.list_user_schedules` List user schedules read
- `knock.users.list_users` List users read
- `knock.users.mark_guide_archived` Mark guide as archived write
- `knock.users.mark_guide_interacted` Mark guide as interacted write
- `knock.users.mark_guide_message_archived` Mark guide as archived write
- `knock.users.mark_guide_message_interacted` Mark guide as interacted write
- `knock.users.mark_guide_message_seen` Mark guide as seen write
- `knock.users.mark_guide_seen` Mark guide as seen write
- `knock.users.mark_guide_unarchived` Mark guide as unarchived write
- `knock.users.merge_user` Merge users destructive
- `knock.users.reset_guide_engagement` Reset guide engagement write
- `knock.users.set_user_channel_data` Set channel data write
- `knock.users.unset_user_channel_data` Unset channel data destructive
- `knock.users.update_user_preference_categories` Update categories in user preference set write
- `knock.users.update_user_preference_category` Update category in user preference set write
- `knock.users.update_user_preference_channel_type` Update channel type in preference set write
- `knock.users.update_user_preference_channel_types` Update channel types in preference set write
- `knock.users.update_user_preference_set` Update user preference set write
- `knock.users.update_user_preference_workflow` Update workflow in user preference set write
- `knock.users.update_user_preference_workflows` Update workflows in preference set write

**Objects 26**

- `knock.objects.add_subscriptions_for_object` Add subscriptions write
- `knock.objects.bulk_add_subscriptions` Bulk add subscriptions write
- `knock.objects.bulk_delete_objects` Bulk delete objects destructive
- `knock.objects.bulk_delete_subscriptions` Bulk delete subscriptions destructive
- `knock.objects.bulk_set_objects` Bulk set objects write
- `knock.objects.delete_object` Delete an object destructive
- `knock.objects.delete_object_preference_set` Delete object preference set destructive
- `knock.objects.delete_subscriptions_for_object` Delete subscriptions destructive
- `knock.objects.get_object` Get an object read
- `knock.objects.get_object_channel_data` Get channel data read
- `knock.objects.get_object_preference_set` Get object preference set read
- `knock.objects.list_messages_for_object` List messages read
- `knock.objects.list_object_preference_sets` List preference sets read
- `knock.objects.list_object_schedules` List object schedules read
- `knock.objects.list_objects` List objects in a collection read
- `knock.objects.list_subscriptions_for_object` List subscriptions read
- `knock.objects.set_object` Set an object write
- `knock.objects.set_object_channel_data` Set channel data write
- `knock.objects.unset_object_channel_data` Unset channel data destructive
- `knock.objects.update_object_preference_categories` Update categories in preference set write
- `knock.objects.update_object_preference_category` Update a category preference write
- `knock.objects.update_object_preference_channel_type` Update a channel type preference write
- `knock.objects.update_object_preference_channel_types` Update channel types in preference set write
- `knock.objects.update_object_preference_set` Update a preference set write
- `knock.objects.update_object_preference_workflow` Update a workflow preference write
- `knock.objects.update_object_preference_workflows` Update workflows in preference set write

**Messages 25**

- `knock.messages.archive_message` Archive message write
- `knock.messages.batch_get_message_contents` Batch get message contents read
- `knock.messages.batch_mark_messages_as_archived` Mark messages as archived write
- `knock.messages.batch_mark_messages_as_interacted` Mark messages as interacted write
- `knock.messages.batch_mark_messages_as_read` Mark messages as read write
- `knock.messages.batch_mark_messages_as_seen` Mark messages as seen write
- `knock.messages.batch_mark_messages_as_unarchived` Mark messages as unarchived write
- `knock.messages.batch_mark_messages_as_unread` Mark messages as unread write
- `knock.messages.batch_mark_messages_as_unseen` Mark messages as unseen write
- `knock.messages.bulk_update_messages_for_channel` Bulk update message statuses for channel write
- `knock.messages.get_message` Get message read
- `knock.messages.get_message_contents` Get message content read
- `knock.messages.list_message_activities` List activities read
- `knock.messages.list_message_delivery_logs` List delivery logs read
- `knock.messages.list_message_events` List events read
- `knock.messages.list_messages` List messages read
- `knock.messages.mark_message_interacted` Mark message as interacted write
- `knock.messages.mark_message_read` Mark message as read write
- `knock.messages.mark_message_seen` Mark message as seen write
- `knock.messages.mark_message_unread` Mark message as unread write
- `knock.messages.mark_message_unread_alt` Mark message as unread write
- `knock.messages.mark_message_unseen` Mark message as unseen write
- `knock.messages.mark_message_unseen_alt` Mark message as unseen write
- `knock.messages.unarchive_message` Unarchive message write
- `knock.messages.unarchive_message_alt` Unarchive message write

**Tenants 6**

- `knock.tenants.bulk_delete_tenants` Bulk delete tenants destructive
- `knock.tenants.bulk_set_tenants` Bulk set tenants write
- `knock.tenants.delete_tenant` Delete a tenant destructive
- `knock.tenants.get_tenant` Get a tenant read
- `knock.tenants.list_tenants` List tenants read
- `knock.tenants.set_tenant` Set a tenant write

**Schedules 5**

- `knock.schedules.bulk_create_schedules` Create schedules in bulk write
- `knock.schedules.create_schedules` Create schedules write
- `knock.schedules.delete_schedules` Delete schedules destructive
- `knock.schedules.list_schedules` List schedules read
- `knock.schedules.update_schedules` Update schedules write

**MS teams 4**

- `knock.ms_teams.auth_check` Microsoft Teams: Check auth read
- `knock.ms_teams.list_channels` Microsoft Teams: List channels read
- `knock.ms_teams.list_teams` Microsoft Teams: List teams read
- `knock.ms_teams.revoke_access` Microsoft Teams: Revoke access destructive

**Workflows 4**

- `knock.workflows.cancel_workflow` Cancel workflow destructive
- `knock.workflows.cancel_workflow_by_name` Cancel workflow destructive
- `knock.workflows.trigger_workflow` Trigger workflow destructive
- `knock.workflows.trigger_workflow_by_name` Trigger workflow destructive

**Audiences 3**

- `knock.audiences.add_audience_members` Add members write
- `knock.audiences.list_audience_members` List members read
- `knock.audiences.remove_audience_members` Remove members destructive

**Slack 3**

- `knock.slack.auth_check` Slack: Check auth read
- `knock.slack.list_channels` Slack: List channels read
- `knock.slack.revoke_access` Slack: Revoke access destructive

**Integrations 2**

- `knock.integrations.census_rpc` Process a Census RPC request write
- `knock.integrations.hightouch_rpc` Process a Hightouch RPC request write

**Workflow recipient runs 2**

- `knock.workflow_recipient_runs.get_workflow_recipient_run` Get a workflow recipient run read
- `knock.workflow_recipient_runs.list_workflow_recipient_runs` List workflow recipient runs read

**Bulk operations 1**

- `knock.bulk_operations.get_bulk_operation` Get bulk operation read

Questions

## The Knock MCP server, answered.

**Is there a Knock MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 118 Knock actions across users, objects, messages and tenants, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Knock.

**What do I need to connect Knock?**

Knock secret API key (sk_...). The free call account { op: "connections.requirements", service: "knock" } lists exactly what to paste.

**Can an AI agent delete or change things in Knock?**

Only if its key allows it, and only with an explicit confirmation. 21 Knock actions are destructive, including delete user, remove members and delete schedules. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my Knock API limit?**

actionlake paces every call to the limits in the Knock service file: 60 calls a second per connection. Repeated reads are answered from cache (29 Knock actions can be), which never reaches Knock.

**What does a Knock action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (118 Knock actions page). Cache hits, searches, dry runs and calls Knock refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which Knock API does it cover?**

The Knock API v1 (OpenAPI 3, api.knock.app) at api.knock.app. It is built from Knock's documentation as read on 23 October 2026. 118 actions in 12 areas, each one in the signed service file (version 1.0.0).

**Does actionlake keep my Knock data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Knock credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like Knock

Shares the most action names with

- [Matrix / Element (Client-Server + Synapse Admin) 5](https://actionlake.com/connectors/matrix-element-client-server-synapse-admin)
- [Rocket.Chat 5](https://actionlake.com/connectors/rocket-chat)
- [Cisco Webex 5](https://actionlake.com/connectors/cisco-webex)
- [Zulip 4](https://actionlake.com/connectors/zulip)
- [8x8 3](https://actionlake.com/connectors/8x8)
- [Vonage Communications APIs 3](https://actionlake.com/connectors/vonage-communications-apis)

Joins with, on shared entities

- [Gusto 2](https://actionlake.com/connectors/gusto)
- [Microsoft 365 Users 2](https://actionlake.com/connectors/microsoft-365-users)
- [Cloudflare 2](https://actionlake.com/connectors/cloudflare)
- [NetBox 2](https://actionlake.com/connectors/netbox)
- [Octopus Deploy 2](https://actionlake.com/connectors/octopus-deploy)
- [Imperva Cloud Application Security 2](https://actionlake.com/connectors/imperva-cloud-application-security)

Browse

- [All Email & messaging connectors](https://actionlake.com/connectors/category/email-and-messaging)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Knock; the name is the vendor's own. Counts are from the Knock service file, version 1.0.0.

## Give your agent Knock today.

[Connect Knock free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/knock
More: https://actionlake.com/llms.txt
