{"openapi":"3.1.0","info":{"title":"Commusoft US (BYOK) API","version":"0.1.0","description":"Commusoft US (BYOK) lets an AI assistant read your own Commusoft US data through the Commusoft US API with a key you supply (Commusoft API key). Read-only: 10 tools (list_customer_types, list_asset_groups, list_asset_types, list_opportunity_pipelines, list_opportunity_stages, list_job_description_templates, list_business_units, list_user_groups, list_advertising_types, list_provinces). The BYOK...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-commusoft-us.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-commusoft-us/docs"},"termsOfService":"https://connectorbay.com/byok-commusoft-us/terms"},"servers":[{"url":"https://byok-commusoft-us.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-commusoft-us/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_customer_types":{"post":{"operationId":"list_customer_types","summary":"List customer types (for example private, company, hospital or builder) with description and whether a company name is r","description":"List customer types (for example private, company, hospital or builder) with description and whether a company name is required. Use for \"What customer types are set up in Commusoft\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created on or after this date-time, ISO 8601.","title":"Created After"}},"title":"list_customer_typesArguments","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_asset_groups":{"post":{"operationId":"list_asset_groups","summary":"List asset groups (top-level equipment categories such as boiler or heat pump) with id, description and version. Cursor ","description":"List asset groups (top-level equipment categories such as boiler or heat pump) with id, description and version. Cursor paged. Use for \"What asset groups does Commusoft track\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records per page (the provider default applies when omitted).","title":"Limit"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last record of the previous page.","title":"After"},"include_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include the total record count in the answer metadata.","title":"Include Count"}},"title":"list_asset_groupsArguments","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_asset_types":{"post":{"operationId":"list_asset_types","summary":"List asset types (a finer split of an asset group, such as combination boiler) with id, description, parent group and ve","description":"List asset types (a finer split of an asset group, such as combination boiler) with id, description, parent group and version. Cursor paged. Use for \"What asset types exist for Commusoft asset group 3\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records per page (the provider default applies when omitted).","title":"Limit"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last record of the previous page.","title":"After"},"include_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include the total record count in the answer metadata.","title":"Include Count"}},"title":"list_asset_typesArguments","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_opportunity_pipelines":{"post":{"operationId":"list_opportunity_pipelines","summary":"List active sales opportunity pipelines with id, name and creation date (use list_opportunity_stages for the stages). Us","description":"List active sales opportunity pipelines with id, name and creation date (use list_opportunity_stages for the stages). Use for \"What opportunity pipelines does Commusoft have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created on or after this date-time, ISO 8601.","title":"Created After"}},"title":"list_opportunity_pipelinesArguments","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_opportunity_stages":{"post":{"operationId":"list_opportunity_stages","summary":"List the stages of one opportunity pipeline with id, name and creation date. Use for \"What stages are in Commusoft oppor","description":"List the stages of one opportunity pipeline with id, name and creation date. Use for \"What stages are in Commusoft opportunity pipeline 2\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pipeline_id":{"description":"Opportunity pipeline id from list_opportunity_pipelines.","title":"Pipeline Id","type":"integer"}},"required":["pipeline_id"],"title":"list_opportunity_stagesArguments","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_job_description_templates":{"post":{"operationId":"list_job_description_templates","summary":"List job description templates (stock job descriptions) with id, text and dates. Use for \"Which job description template","description":"List job description templates (stock job descriptions) with id, text and dates. Use for \"Which job description templates are saved in Commusoft\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created on or after this date-time, ISO 8601.","title":"Created After"}},"title":"list_job_description_templatesArguments","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_business_units":{"post":{"operationId":"list_business_units","summary":"List business units (branches or departments) with id and name. Use for \"Which business units does my Commusoft account ","description":"List business units (branches or departments) with id and name. Use for \"Which business units does my Commusoft account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created on or after this date-time, ISO 8601.","title":"Created After"}},"title":"list_business_unitsArguments","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_user_groups":{"post":{"operationId":"list_user_groups","summary":"List user groups (reporting lines that group technicians on the schedule) with id and name; no user details. Use for \"Wh","description":"List user groups (reporting lines that group technicians on the schedule) with id and name; no user details. Use for \"What user groups are configured in Commusoft\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created on or after this date-time, ISO 8601.","title":"Created After"}},"title":"list_user_groupsArguments","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_advertising_types":{"post":{"operationId":"list_advertising_types","summary":"List lead source (advertising) types with id and name. Cursor paged. Use for \"What lead sources can I choose in Commusof","description":"List lead source (advertising) types with id and name. Cursor paged. Use for \"What lead sources can I choose in Commusoft\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records per page (the provider default applies when omitted).","title":"Limit"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last record of the previous page.","title":"After"},"include_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include the total record count in the answer metadata.","title":"Include Count"}},"title":"list_advertising_typesArguments","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_provinces":{"post":{"operationId":"list_provinces","summary":"List provinces, counties or states available for addresses with id and name. Cursor paged. Use for \"Which counties can I","description":"List provinces, counties or states available for addresses with id and name. Cursor paged. Use for \"Which counties can I use for Commusoft addresses\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records per page (the provider default applies when omitted).","title":"Limit"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last record of the previous page.","title":"After"},"include_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include the total record count in the answer metadata.","title":"Include Count"}},"title":"list_provincesArguments","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}}}}