{"openapi":"3.1.0","info":{"title":"HubSpot Conversations (BYOK) API","version":"0.1.0","description":"HubSpot Conversations (BYOK) lets an AI assistant read your own HubSpot Conversations data through the HubSpot Conversations API with a key you supply (HubSpot private app access token (scope: conversations.read)). Read-only: 5 tools (list_inboxes, get_inbox, list_channels, get_channel, list_channel_accounts). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-hubspot-conversations.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-hubspot-conversations/docs"},"termsOfService":"https://connectorbay.com/byok-hubspot-conversations/terms"},"servers":[{"url":"https://byok-hubspot-conversations.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-hubspot-conversations/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_inboxes":{"post":{"operationId":"list_inboxes","summary":"List conversations inboxes and help desks with id, name, type, archived flag and dates. Use for \"Which conversation inbo","description":"List conversations inboxes and help desks with id, name, type, archived flag and dates. Use for \"Which conversation inboxes does our HubSpot account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: paging.next.after from the previous answer. Leave out for the first page.","title":"After"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to list only archived inboxes.","title":"Archived"}},"title":"list_inboxesArguments","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_inbox":{"post":{"operationId":"get_inbox","summary":"Get one conversations inbox or help desk by id: name, type, archived flag and dates. Use for \"What type of inbox is HubS","description":"Get one conversations inbox or help desk by id: name, type, archived flag and dates. Use for \"What type of inbox is HubSpot inbox 1001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"inbox_id":{"description":"Id of the inbox (a numeric string such as '1001').","maxLength":200,"title":"Inbox Id","type":"string"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to look up an archived inbox.","title":"Archived"}},"required":["inbox_id"],"title":"get_inboxArguments","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_channels":{"post":{"operationId":"list_channels","summary":"List the channel types the account can receive conversations on (for example email, chat, Facebook Messenger) with id an","description":"List the channel types the account can receive conversations on (for example email, chat, Facebook Messenger) with id and name. Use for \"Which conversation channels exist in HubSpot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: paging.next.after from the previous answer. Leave out for the first page.","title":"After"}},"title":"list_channelsArguments","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_channel":{"post":{"operationId":"get_channel","summary":"Get one channel type by id: id and name. Use for \"What is HubSpot conversations channel 1000\".","description":"Get one channel type by id: id and name. Use for \"What is HubSpot conversations channel 1000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"channel_id":{"description":"Id of the channel (a numeric string such as '1000').","maxLength":200,"title":"Channel Id","type":"string"}},"required":["channel_id"],"title":"get_channelArguments","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_channel_accounts":{"post":{"operationId":"list_channel_accounts","summary":"List connected channel accounts (a chat flow, a mailbox, a number) with name, channel id, inbox id, and active, authoriz","description":"List connected channel accounts (a chat flow, a mailbox, a number) with name, channel id, inbox id, and active, authorized and archived flags. Delivery addresses are shown only by type. Use for \"Which channel accounts feed our HubSpot inboxes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: paging.next.after from the previous answer. Leave out for the first page.","title":"After"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to list only archived channel accounts.","title":"Archived"}},"title":"list_channel_accountsArguments","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}}}}