{"openapi":"3.1.0","info":{"title":"Knock (BYOK) API","version":"0.1.0","description":"Knock (BYOK) lets an AI assistant read your own Knock data through the Knock API with a key you supply (secret API key (starts with sk_)). Read-only: 6 tools (list_messages, get_message, list_users, get_user, list_objects, get_object). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to api.knock.app. Unofficial...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-knock.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-knock/docs"},"termsOfService":"https://connectorbay.com/byok-knock/terms"},"servers":[{"url":"https://byok-knock.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-knock/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_messages":{"post":{"operationId":"list_messages","summary":"List notification messages sent through Knock, with delivery status, engagement status, recipient, channel and the workf","description":"List notification messages sent through Knock, with delivery status, engagement status, recipient, channel and the workflow that produced each. Cursor pagination. Use for \"Which Knock notifications failed to deliver recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (default 50).","title":"Page Size"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: pass page_info.after from the previous answer to get the next page.","title":"After"},"channel_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages sent through this channel ID.","title":"Channel Id"},"tenant":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages for this tenant ID.","title":"Tenant"},"source":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages triggered by this workflow key.","title":"Source"},"workflow_run_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages from this top-level workflow run ID.","title":"Workflow Run Id"}},"title":"list_messagesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_message":{"post":{"operationId":"get_message","summary":"Get one Knock message by ID: delivery and engagement status, recipient, channel, workflow and timestamps (payload data n","description":"Get one Knock message by ID: delivery and engagement status, recipient, channel, workflow and timestamps (payload data not returned). Use for \"What happened to this Knock message\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"message_id":{"description":"Message ID from list_messages.","maxLength":200,"title":"Message Id","type":"string"}},"required":["message_id"],"title":"get_messageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_users":{"post":{"operationId":"list_users","summary":"List users (notification recipients) with ID, name, email and timestamps. Cursor pagination. Use for \"Which users exist ","description":"List users (notification recipients) with ID, name, email and timestamps. Cursor pagination. Use for \"Which users exist in my Knock environment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (default 50).","title":"Page Size"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: pass page_info.after from the previous answer to get the next page.","title":"After"}},"title":"list_usersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_user":{"post":{"operationId":"get_user","summary":"Get one Knock user by ID: name, email and timestamps. Use for \"What are the details of Knock user user_123\".","description":"Get one Knock user by ID: name, email and timestamps. Use for \"What are the details of Knock user user_123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"The user's ID in Knock.","maxLength":200,"title":"User Id","type":"string"}},"required":["user_id"],"title":"get_userArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_objects":{"post":{"operationId":"list_objects","summary":"List the objects of one collection (non-user recipients such as projects or teams) with their properties. Cursor paginat","description":"List the objects of one collection (non-user recipients such as projects or teams) with their properties. Cursor pagination. Use for \"Which objects are in my Knock projects collection\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"collection":{"description":"Collection name the objects belong to, for example 'projects'.","maxLength":200,"title":"Collection","type":"string"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (default 50).","title":"Page Size"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: pass page_info.after from the previous answer to get the next page.","title":"After"}},"required":["collection"],"title":"list_objectsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_object":{"post":{"operationId":"get_object","summary":"Get one Knock object by collection and ID, with its properties. Use for \"What are the properties of Knock object project","description":"Get one Knock object by collection and ID, with its properties. Use for \"What are the properties of Knock object project-1 in projects\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"collection":{"description":"Collection name, for example 'projects'.","maxLength":200,"title":"Collection","type":"string"},"id":{"description":"Object ID within the collection.","maxLength":200,"title":"Id","type":"string"}},"required":["collection","id"],"title":"get_objectArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}