{"openapi":"3.1.0","info":{"title":"HubSpot Commerce (BYOK) API","version":"0.1.0","description":"HubSpot Commerce (BYOK) lets an AI assistant read your own HubSpot Commerce data through the HubSpot Commerce API with a key you supply (HubSpot private app access token (scopes: crm.objects.line_items.read, crm.objects.quotes.read, crm.objects.invoices.read, e-commerce)). Read-only: 9 tools (list_products, get_product, search_products, list_line_items, get_line_item, list_quotes, get_quote,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-hubspot-commerce.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-hubspot-commerce/docs"},"termsOfService":"https://connectorbay.com/byok-hubspot-commerce/terms"},"servers":[{"url":"https://byok-hubspot-commerce.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-hubspot-commerce/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_products":{"post":{"operationId":"list_products","summary":"List products in the HubSpot product library with name, description, price and SKU, with a cursor for paging. Use for \"W","description":"List products in the HubSpot product library with name, description, price and SKU, with a cursor for paging. Use for \"What products are in our HubSpot product library\".","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 records to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: paging.next.after from the previous answer. Leave out for the first page.","title":"After"},"properties":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":"name,description,price,hs_sku","description":"Comma-separated property names to return, for example 'name,price,hs_sku,recurringbillingfrequency'. Property names depend on your account; unknown names are ignored.","title":"Properties"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to list archived records instead of active ones.","title":"Archived"}},"title":"list_productsArguments","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_product":{"post":{"operationId":"get_product","summary":"Get one product by record id with the requested properties (default name, description, price, SKU). Use for \"What is the","description":"Get one product by record id with the requested properties (default name, description, price, SKU). Use for \"What is the price of HubSpot product 6001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"product_id":{"description":"Id of the record (a numeric string such as '6001').","maxLength":200,"title":"Product Id","type":"string"},"properties":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":"name,description,price,hs_sku","description":"Comma-separated property names to return, for example 'name,price,hs_sku'. Property names depend on your account; unknown names are ignored.","title":"Properties"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to read an archived record.","title":"Archived"}},"required":["product_id"],"title":"get_productArguments","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/search_products":{"post":{"operationId":"search_products","summary":"Search products by text in their searchable properties (name, description, SKU); returns matching products with price an","description":"Search products by text in their searchable properties (name, description, SKU); returns matching products with price and SKU. Use for \"Find HubSpot products matching 'annual'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Text to search for in product name, description and SKU, up to 3000 characters.","maxLength":3000,"title":"Query","type":"string"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 200).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: paging.next.after from the previous answer. Leave out for the first page.","title":"After"}},"required":["query"],"title":"search_productsArguments","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_line_items":{"post":{"operationId":"list_line_items","summary":"List deal line items (product name, quantity, unit price, amount, SKU), with a cursor for paging. Use for \"What line ite","description":"List deal line items (product name, quantity, unit price, amount, SKU), with a cursor for paging. Use for \"What line items 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 records to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: paging.next.after from the previous answer. Leave out for the first page.","title":"After"},"properties":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":"name,quantity,price,amount,hs_sku","description":"Comma-separated property names to return, for example 'name,quantity,price,amount,recurringbillingfrequency'. Property names depend on your account; unknown names are ignored.","title":"Properties"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to list archived records instead of active ones.","title":"Archived"}},"title":"list_line_itemsArguments","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_line_item":{"post":{"operationId":"get_line_item","summary":"Get one line item by record id with name, quantity, price and amount. Use for \"What is HubSpot line item 6001\".","description":"Get one line item by record id with name, quantity, price and amount. Use for \"What is HubSpot line item 6001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"line_item_id":{"description":"Id of the record (a numeric string such as '6001').","maxLength":200,"title":"Line Item Id","type":"string"},"properties":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":"name,quantity,price,amount,hs_sku","description":"Comma-separated property names to return, for example 'name,quantity,price,amount'. Property names depend on your account; unknown names are ignored.","title":"Properties"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to read an archived record.","title":"Archived"}},"required":["line_item_id"],"title":"get_line_itemArguments","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_quotes":{"post":{"operationId":"list_quotes","summary":"List quotes with title, status, expiration date, total amount and currency, with a cursor for paging. Buyer contact deta","description":"List quotes with title, status, expiration date, total amount and currency, with a cursor for paging. Buyer contact details are not requested. Use for \"Which HubSpot quotes are expiring soon\".","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 records to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: paging.next.after from the previous answer. Leave out for the first page.","title":"After"},"properties":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":"hs_title,hs_status,hs_expiration_date,hs_quote_amount,hs_currency","description":"Comma-separated property names to return, for example 'hs_title,hs_status,hs_expiration_date,hs_quote_amount'. Property names depend on your account; unknown names are ignored.","title":"Properties"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to list archived records instead of active ones.","title":"Archived"}},"title":"list_quotesArguments","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_quote":{"post":{"operationId":"get_quote","summary":"Get one quote by record id with title, status, expiration date, amount and currency. Use for \"What is the status of HubS","description":"Get one quote by record id with title, status, expiration date, amount and currency. Use for \"What is the status of HubSpot quote 6001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"quote_id":{"description":"Id of the record (a numeric string such as '6001').","maxLength":200,"title":"Quote Id","type":"string"},"properties":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":"hs_title,hs_status,hs_expiration_date,hs_quote_amount,hs_currency","description":"Comma-separated property names to return, for example 'hs_title,hs_status,hs_quote_amount'. Property names depend on your account; unknown names are ignored.","title":"Properties"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to read an archived record.","title":"Archived"}},"required":["quote_id"],"title":"get_quoteArguments","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_invoices":{"post":{"operationId":"list_invoices","summary":"List invoices with number, status, billed amount, balance due, due date and currency, with a cursor for paging. Customer","description":"List invoices with number, status, billed amount, balance due, due date and currency, with a cursor for paging. Customer details are not requested. Use for \"Which HubSpot invoices are still unpaid\".","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 records to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: paging.next.after from the previous answer. Leave out for the first page.","title":"After"},"properties":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":"hs_invoice_status,hs_number,hs_amount_billed,hs_balance_due,hs_due_date,hs_currency","description":"Comma-separated property names to return, for example 'hs_invoice_status,hs_number,hs_balance_due,hs_due_date'. Property names depend on your account; unknown names are ignored.","title":"Properties"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to list archived records instead of active ones.","title":"Archived"}},"title":"list_invoicesArguments","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_invoice":{"post":{"operationId":"get_invoice","summary":"Get one invoice by record id with number, status, amounts, due date and currency. Use for \"What is the balance due on Hu","description":"Get one invoice by record id with number, status, amounts, due date and currency. Use for \"What is the balance due on HubSpot invoice 6001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"invoice_id":{"description":"Id of the record (a numeric string such as '6001').","maxLength":200,"title":"Invoice Id","type":"string"},"properties":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":"hs_invoice_status,hs_number,hs_amount_billed,hs_balance_due,hs_due_date,hs_currency","description":"Comma-separated property names to return, for example 'hs_invoice_status,hs_balance_due'. Property names depend on your account; unknown names are ignored.","title":"Properties"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to read an archived record.","title":"Archived"}},"required":["invoice_id"],"title":"get_invoiceArguments","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}}}}