{"openapi":"3.1.0","info":{"title":"Split (BYOK) API","version":"0.1.0","description":"Split (BYOK) lets an AI assistant read your own Split data through the Split API with a key you supply (Split Admin API key). Read-only: 11 tools (list_projects, list_environments, list_traffic_types, list_feature_flags, get_feature_flag, list_flag_definitions, list_segments, list_attributes, list_rollout_statuses, list_groups, list_change_requests). The BYOK key travels with each request, is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-split.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-split/docs"},"termsOfService":"https://connectorbay.com/byok-split/terms"},"servers":[{"url":"https://byok-split.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-split/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_projects":{"post":{"operationId":"list_projects","summary":"List the projects (workspaces) the key can see, with their IDs and Harness organization and project identifiers. Use the","description":"List the projects (workspaces) the key can see, with their IDs and Harness organization and project identifiers. Use the id in the other tools. Use for \"Which Split projects do I have and what are their IDs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many projects to return (default 20, maximum 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only projects with exactly this name.","title":"Name"}},"title":"list_projectsArguments","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_environments":{"post":{"operationId":"list_environments","summary":"List the environments of one project with their IDs and names. Use for \"Which environments does my Split project have\".","description":"List the environments of one project with their IDs and names. Use for \"Which environments does my Split project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"ID of the project (called workspace in the API). Get it from list_projects.","maxLength":200,"title":"Workspace Id","type":"string"}},"required":["workspace_id"],"title":"list_environmentsArguments","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_traffic_types":{"post":{"operationId":"list_traffic_types","summary":"List the traffic types (the kind of key flags target, such as user or account) of one project. Use for \"What traffic typ","description":"List the traffic types (the kind of key flags target, such as user or account) of one project. Use for \"What traffic types are defined in my Split project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"ID of the project (called workspace in the API). Get it from list_projects.","maxLength":200,"title":"Workspace Id","type":"string"}},"required":["workspace_id"],"title":"list_traffic_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_feature_flags":{"post":{"operationId":"list_feature_flags","summary":"List the feature flags of a project (metadata only: traffic type, rollout status, creation time), 50 per page at most. U","description":"List the feature flags of a project (metadata only: traffic type, rollout status, creation time), 50 per page at most. Use for \"Which feature flags exist in my Split project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"ID of the project (called workspace in the API). Get it from list_projects.","maxLength":200,"title":"Workspace Id","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many flags to return (default 20, maximum 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"},"tag":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only flags carrying this tag.","title":"Tag"}},"required":["workspace_id"],"title":"list_feature_flagsArguments","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_feature_flag":{"post":{"operationId":"get_feature_flag","summary":"Get the metadata of one feature flag: description, traffic type, rollout status and creation time. Use for \"Show me the ","description":"Get the metadata of one feature flag: description, traffic type, rollout status and creation time. Use for \"Show me the details of the paywall_beta flag in Split\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"ID of the project (called workspace in the API). Get it from list_projects.","maxLength":200,"title":"Workspace Id","type":"string"},"feature_flag_name":{"description":"Case-sensitive name of the feature flag, for example 'paywall_beta'.","maxLength":200,"title":"Feature Flag Name","type":"string"}},"required":["workspace_id","feature_flag_name"],"title":"get_feature_flagArguments","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_flag_definitions":{"post":{"operationId":"list_flag_definitions","summary":"List the feature flag definitions configured in one environment: killed state, default treatment, traffic allocation and","description":"List the feature flag definitions configured in one environment: killed state, default treatment, traffic allocation and last update, 50 per page at most. Use for \"What is the state of my feature flags in the production environment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"ID of the project (called workspace in the API). Get it from list_projects.","maxLength":200,"title":"Workspace Id","type":"string"},"environment":{"description":"ID or case-sensitive name of the environment, for example 'Prod-Default'.","maxLength":200,"title":"Environment","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many definitions to return (default 20, maximum 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"}},"required":["workspace_id","environment"],"title":"list_flag_definitionsArguments","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 the segments of a project (name, description, traffic type, creation time), 50 per page at most. Use for \"Which seg","description":"List the segments of a project (name, description, traffic type, creation time), 50 per page at most. Use for \"Which segments are defined in my Split project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"ID of the project (called workspace in the API). Get it from list_projects.","maxLength":200,"title":"Workspace Id","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many segments to return (default 20, maximum 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"}},"required":["workspace_id"],"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_attributes":{"post":{"operationId":"list_attributes","summary":"List the attributes registered for one traffic type of a project (display name, data type, whether searchable). Use for ","description":"List the attributes registered for one traffic type of a project (display name, data type, whether searchable). Use for \"Which attributes are registered for the user traffic type in Split\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"ID of the project (called workspace in the API). Get it from list_projects.","maxLength":200,"title":"Workspace Id","type":"string"},"traffic_type_id":{"description":"ID of the traffic type, from list_traffic_types.","maxLength":200,"title":"Traffic Type Id","type":"string"},"search_prefix":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only attributes whose ID starts with this text.","title":"Search Prefix"}},"required":["workspace_id","traffic_type_id"],"title":"list_attributesArguments","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_rollout_statuses":{"post":{"operationId":"list_rollout_statuses","summary":"List the rollout statuses a feature flag can have in a project, such as Pre-Production or Killed, with descriptions. Use","description":"List the rollout statuses a feature flag can have in a project, such as Pre-Production or Killed, with descriptions. Use for \"What rollout statuses can my Split flags have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ws_id":{"description":"ID of the project (workspace).","maxLength":200,"title":"Ws Id","type":"string"}},"required":["ws_id"],"title":"list_rollout_statusesArguments","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_groups":{"post":{"operationId":"list_groups","summary":"List the user groups of the account (name and description), up to 200 per call. Members are not returned. Use for \"Which","description":"List the user groups of the account (name and description), up to 200 per call. Members are not returned. Use for \"Which groups exist in my Split account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many groups to return (1 to 200, default 50).","title":"Limit"}},"title":"list_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_change_requests":{"post":{"operationId":"list_change_requests","summary":"List change requests for feature flags or segments in a project, filtered by status, with title, operation type and sche","description":"List change requests for feature flags or segments in a project, filtered by status, with title, operation type and scheduled time. Use for \"Which change requests are waiting for approval in Split\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"ID of the project (workspace) to list change requests for.","maxLength":200,"title":"Workspace Id","type":"string"},"environment_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Narrow to one environment by its ID.","title":"Environment Id"},"status":{"anyOf":[{"enum":["REQUESTED","SCHEDULE_REQUESTED","APPROVED","REJECTED","WITHDRAWN","PUBLISHED"],"type":"string"},{"type":"null"}],"default":"REQUESTED","description":"REQUESTED (default), SCHEDULE_REQUESTED, APPROVED, REJECTED, WITHDRAWN or PUBLISHED.","title":"Status"},"object_type":{"anyOf":[{"enum":["Split","Segment"],"type":"string"},{"type":"null"}],"default":null,"description":"Split for feature flags or Segment for segments.","title":"Object Type"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many change requests to return (1 to 100, default 20).","title":"Limit"}},"required":["workspace_id"],"title":"list_change_requestsArguments","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}}}}