{
  "service": "knock",
  "displayName": "Knock",
  "categories": [
    "Communication",
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "Secret API Key",
      "placeholder": "sk_...",
      "description": "Knock secret API key sent as a Bearer token. Create or copy it from the Knock dashboard API keys page: https://dashboard.knock.app/developer-tools/api-keys."
    }
  ],
  "homepageUrl": "https://knock.app/",
  "actions": [
    {
      "id": "knock.delete_user",
      "service": "knock",
      "name": "delete_user",
      "description": "Permanently delete a Knock user and associated data.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "The Knock user ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "userId"
        ],
        "description": "Identifier for deleting a Knock user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the delete request completed successfully."
          },
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "The Knock user ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "success",
          "userId"
        ],
        "description": "Knock user deletion response."
      }
    },
    {
      "id": "knock.get_user",
      "service": "knock",
      "name": "get_user",
      "description": "Retrieve a Knock user by user ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "The Knock user ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "userId"
        ],
        "description": "Identifier for retrieving a Knock user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Knock user ID."
              },
              "email": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The user's email address when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The user's display name when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the Knock user was created."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the Knock user was last updated."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw Knock user payload."
              }
            },
            "additionalProperties": true,
            "description": "A normalized Knock user."
          }
        },
        "additionalProperties": false,
        "required": [
          "user"
        ],
        "description": "Knock user retrieval response."
      }
    },
    {
      "id": "knock.identify_user",
      "service": "knock",
      "name": "identify_user",
      "description": "Create or update a Knock user with identification data.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "The Knock user ID."
          },
          "email": {
            "type": "string",
            "minLength": 1,
            "description": "The user's email address."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's display name."
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "description": "The user's IANA timezone."
          },
          "avatar": {
            "type": "string",
            "minLength": 1,
            "description": "The user's avatar URL."
          },
          "phoneNumber": {
            "type": "string",
            "minLength": 1,
            "description": "The user's phone number."
          },
          "channelData": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Knock channel data keyed by channel ID."
          },
          "preferences": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Knock user preference data."
          },
          "properties": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Additional user properties to send to Knock as top-level identify fields."
          }
        },
        "additionalProperties": false,
        "required": [
          "userId"
        ],
        "description": "Parameters for creating or updating a Knock user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Knock user ID."
              },
              "email": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The user's email address when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The user's display name when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the Knock user was created."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the Knock user was last updated."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw Knock user payload."
              }
            },
            "additionalProperties": true,
            "description": "A normalized Knock user."
          }
        },
        "additionalProperties": false,
        "required": [
          "user"
        ],
        "description": "Knock user identify response."
      }
    },
    {
      "id": "knock.list_users",
      "service": "knock",
      "name": "list_users",
      "description": "List Knock users with cursor pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "include": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One Knock include value."
            },
            "description": "Associated resources to include in the Knock response.",
            "minItems": 1
          },
          "after": {
            "type": "string",
            "minLength": 1,
            "description": "A Knock pagination cursor."
          },
          "before": {
            "type": "string",
            "minLength": 1,
            "description": "A Knock pagination cursor."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "The number of users to return. Knock defaults to 50."
          }
        },
        "additionalProperties": false,
        "description": "Parameters for listing Knock users."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Knock user ID."
                },
                "email": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The user's email address when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The user's display name when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the Knock user was created."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "updatedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the Knock user was last updated."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Knock user payload."
                }
              },
              "additionalProperties": true,
              "description": "A normalized Knock user."
            },
            "description": "Users returned by Knock."
          },
          "pageInfo": {
            "type": "object",
            "properties": {
              "after": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The next-page cursor when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "before": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The previous-page cursor when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "pageSize": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The page size returned by Knock."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw Knock page_info payload."
              }
            },
            "additionalProperties": true,
            "description": "Knock pagination information."
          }
        },
        "additionalProperties": false,
        "required": [
          "users",
          "pageInfo"
        ],
        "description": "Knock users list response."
      }
    },
    {
      "id": "knock.trigger_workflow",
      "service": "knock",
      "name": "trigger_workflow",
      "description": "Trigger a Knock workflow for one or more recipients and return the workflow run request ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The Knock workflow key to trigger."
          },
          "recipients": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "description": "A Knock ID string."
                },
                {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Inline Knock identification object."
                }
              ],
              "description": "A Knock ID string or inline identification object."
            },
            "description": "Workflow recipients as Knock IDs or inline identification objects.",
            "minItems": 1
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Workflow data payload passed to Knock."
          },
          "actor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "A Knock ID string."
              },
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Inline Knock identification object."
              }
            ],
            "description": "A Knock ID string or inline identification object."
          },
          "tenant": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "A Knock ID string."
              },
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Inline Knock identification object."
              }
            ],
            "description": "A Knock ID string or inline identification object."
          },
          "cancellationKey": {
            "type": "string",
            "minLength": 1,
            "description": "A cancellation key for the workflow run."
          },
          "settings": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Workflow trigger settings passed to Knock."
          },
          "idempotencyKey": {
            "type": "string",
            "minLength": 1,
            "description": "An optional Idempotency-Key header value for safe retries."
          }
        },
        "additionalProperties": false,
        "required": [
          "key",
          "recipients"
        ],
        "description": "Parameters for triggering a Knock workflow."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "workflowRunId": {
            "type": "string",
            "description": "The workflow_run_id returned by Knock."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Knock workflow trigger payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "workflowRunId",
          "raw"
        ],
        "description": "Knock workflow trigger response."
      }
    }
  ]
}
