{"openapi":"3.1.0","info":{"title":"Chameleon (BYOK) API","version":"0.1.0","description":"Chameleon (BYOK) lets an AI assistant read your own Chameleon data through the Chameleon API with a key you supply (Chameleon account secret). Read-only: 10 tools (list_microsurveys, get_microsurvey, list_microsurvey_responses, list_segments, list_tours, get_tour, list_launchers, list_tags, list_event_names, list_properties). The BYOK key travels with each request, is used for that one call only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-chameleon.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-chameleon/docs"},"termsOfService":"https://connectorbay.com/byok-chameleon/terms"},"servers":[{"url":"https://byok-chameleon.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-chameleon/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_microsurveys":{"post":{"operationId":"list_microsurveys","summary":"List Chameleon microsurveys (in-app surveys), newest first, with publish and schedule dates, segments and all-time count","description":"List Chameleon microsurveys (in-app surveys), newest first, with publish and schedule dates, segments and all-time counts of how many users saw, completed and dismissed each. Use for \"Which Chameleon microsurveys are live and how many people completed each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 500).","title":"Limit"},"before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging: the cursor.before value of the previous answer, or an ISO 8601 time to get only items created before it.","title":"Before"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time or Chameleon ID.","title":"After"}},"title":"list_microsurveysArguments","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_microsurvey":{"post":{"operationId":"get_microsurvey","summary":"Get one Chameleon microsurvey by ID: name, publish state, segments, tags, content summary and all-time start, completion","description":"Get one Chameleon microsurvey by ID: name, publish state, segments, tags, content summary and all-time start, completion and exit counts. Use for \"Show the details and completion stats of Chameleon microsurvey 5f3c4232c712de665632a6d5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Chameleon microsurvey ID (24 hex characters), from list_microsurveys.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_microsurveyArguments","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_microsurvey_responses":{"post":{"operationId":"list_microsurvey_responses","summary":"List the answers given to one Chameleon microsurvey, newest first: the button clicked, free-text comment, dropdown choic","description":"List the answers given to one Chameleon microsurvey, newest first: the button clicked, free-text comment, dropdown choices and completion time. User profile and company details are not requested. Use for \"What answers did people give to Chameleon microsurvey 5f3c4232c712de665632a6d5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"survey_id":{"description":"Chameleon microsurvey ID, from list_microsurveys.","maxLength":200,"title":"Survey Id","type":"string"},"expand_profile":{"anyOf":[{"const":"skip","type":"string"},{"type":"null"}],"default":"skip","description":"Always skip: leaves user profile details out of the answer.","title":"Expand Profile"},"expand_company":{"anyOf":[{"const":"skip","type":"string"},{"type":"null"}],"default":"skip","description":"Always skip: leaves company details out of the answer.","title":"Expand Company"},"order":{"anyOf":[{"enum":["created_at","updated_at"],"type":"string"},{"type":"null"}],"default":"created_at","description":"Order by created_at (default) or updated_at.","title":"Order"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 500).","title":"Limit"},"before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging: the cursor.before value of the previous answer, or an ISO 8601 time to get only items created before it.","title":"Before"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time or Chameleon ID.","title":"After"}},"required":["survey_id"],"title":"list_microsurvey_responsesArguments","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_segments":{"post":{"operationId":"list_segments","summary":"List Chameleon user segments with the filter rules (property, operator, value) that define each one. Use for \"Which user","description":"List Chameleon user segments with the filter rules (property, operator, value) that define each one. Use for \"Which user segments do I have in Chameleon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 500).","title":"Limit"},"before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging: the cursor.before value of the previous answer, or an ISO 8601 time to get only items created before it.","title":"Before"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time or Chameleon ID.","title":"After"}},"title":"list_segmentsArguments","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_tours":{"post":{"operationId":"list_tours","summary":"List Chameleon product tours, newest first, with delivery style (auto or manual), publish and schedule dates, segments a","description":"List Chameleon product tours, newest first, with delivery style (auto or manual), publish and schedule dates, segments and all-time started, completed and exited counts. Use for \"Which Chameleon tours are published and how many users finished them\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 500).","title":"Limit"},"before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging: the cursor.before value of the previous answer, or an ISO 8601 time to get only items created before it.","title":"Before"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time or Chameleon ID.","title":"After"}},"title":"list_toursArguments","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_tour":{"post":{"operationId":"get_tour","summary":"Get one Chameleon tour by ID: name, delivery style, publish state, segments, tags, content summary and all-time counts. ","description":"Get one Chameleon tour by ID: name, delivery style, publish state, segments, tags, content summary and all-time counts. Use for \"Show Chameleon tour 5f3c4232c712de665632a6d5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Chameleon tour ID (24 hex characters), from list_tours.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_tourArguments","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_launchers":{"post":{"operationId":"list_launchers","summary":"List Chameleon launchers (in-app menus and checklists) with preset, title, publish date, segments and all-time displayed","description":"List Chameleon launchers (in-app menus and checklists) with preset, title, publish date, segments and all-time displayed and opened counts. Use for \"Which Chameleon launchers exist and how often are they opened\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 500).","title":"Limit"},"before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging: the cursor.before value of the previous answer, or an ISO 8601 time to get only items created before it.","title":"Before"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time or Chameleon ID.","title":"After"}},"title":"list_launchersArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List the tags used to group Chameleon experiences, with how many experiences carry each tag. Use for \"Which tags do I us","description":"List the tags used to group Chameleon experiences, with how many experiences carry each tag. Use for \"Which tags do I use for my Chameleon experiences\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 500).","title":"Limit"},"before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging: the cursor.before value of the previous answer, or an ISO 8601 time to get only items created before it.","title":"Before"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time or Chameleon ID.","title":"After"}},"title":"list_tagsArguments","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_event_names":{"post":{"operationId":"list_event_names","summary":"List the events tracked in Chameleon (name, normalized ID, source such as api_js or segment, and when each last fired). ","description":"List the events tracked in Chameleon (name, normalized ID, source such as api_js or segment, and when each last fired). Use for \"Which events does Chameleon track and when did each last fire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 500).","title":"Limit"},"before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging: the cursor.before value of the previous answer, or an ISO 8601 time to get only items created before it.","title":"Before"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time or Chameleon ID.","title":"After"}},"title":"list_event_namesArguments","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_properties":{"post":{"operationId":"list_properties","summary":"List the user profile or company properties Chameleon knows about, with their data types and when each was last seen. Sa","description":"List the user profile or company properties Chameleon knows about, with their data types and when each was last seen. Sample values are not returned. Use for \"Which user properties are being sent to Chameleon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"kind":{"description":"Which properties: profile (users) or company.","enum":["profile","company"],"title":"Kind","type":"string"},"integration":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only properties created by this integration, for example api or salesforce. Leave out for all.","title":"Integration"},"order":{"anyOf":[{"enum":["created_at","last_seen_at"],"type":"string"},{"type":"null"}],"default":"created_at","description":"Order by created_at (default) or last_seen_at, most recent first.","title":"Order"}},"required":["kind"],"title":"list_propertiesArguments","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}}}}