{"openapi":"3.1.0","info":{"title":"Cortex (BYOK) API","version":"0.1.0","description":"Cortex (BYOK) lets an AI assistant read your own Cortex data through the Cortex API with a key you supply (Cortex API key). Read-only: 12 tools (list_entities, get_entity, list_entity_types, list_scorecards, get_scorecard_scores, get_entity_scorecards, list_teams, list_initiatives, list_entity_deployments, search_deployments, list_workflows, get_integration_status). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cortex.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cortex/docs"},"termsOfService":"https://connectorbay.com/byok-cortex/terms"},"servers":[{"url":"https://byok-cortex.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cortex/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_entities":{"post":{"operationId":"list_entities","summary":"List catalog entities (services, resources, domains) with tag, type, description and last update; filter by type, group ","description":"List catalog entities (services, resources, domains) with tag, type, description and last update; filter by type, group or a search query. Use for \"Which services are in our Cortex catalog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"types":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated entity types to keep, for example 'service,domain'.","title":"Types"},"groups":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated catalog groups to keep.","title":"Groups"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Cortex search query over entity properties (a name or CQL expression).","title":"Query"},"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include archived entities.","title":"Include Archived"},"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results per page (1 to 1000).","title":"Page Size"}},"title":"list_entitiesArguments","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_entity":{"post":{"operationId":"get_entity","summary":"Get one catalog entity: description, git repository, owners, links, Slack channels, custom metadata and hierarchy. Use f","description":"Get one catalog entity: description, git repository, owners, links, Slack channels, custom metadata and hierarchy. Use for \"Who owns the payments-service entity in Cortex and where is its repository\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tag_or_id":{"description":"Entity tag (the x-cortex-tag value) or its 18-character id.","maxLength":200,"title":"Tag Or Id","type":"string"}},"required":["tag_or_id"],"title":"get_entityArguments","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_entity_types":{"post":{"operationId":"list_entity_types","summary":"List the custom and built-in entity type definitions beyond service, domain and team. Use for \"Which entity types are de","description":"List the custom and built-in entity type definitions beyond service, domain and team. Use for \"Which entity types are defined in our Cortex workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many results per page (1 to 1000).","title":"Page Size"}},"title":"list_entity_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_scorecards":{"post":{"operationId":"list_scorecards","summary":"List scorecards with description, draft flag, levels and last update. Use for \"Which scorecards do we have in Cortex\".","description":"List scorecards with description, draft flag, levels and last update. Use for \"Which scorecards do we have in Cortex\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"show_drafts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include draft scorecards.","title":"Show Drafts"},"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many results per page (1 to 1000).","title":"Page Size"}},"title":"list_scorecardsArguments","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_scorecard_scores":{"post":{"operationId":"get_scorecard_scores","summary":"Get the latest score of every entity in one scorecard. Use for \"How do our services score on the production-readiness sc","description":"Get the latest score of every entity in one scorecard. Use for \"How do our services score on the production-readiness scorecard in Cortex\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tag":{"description":"Scorecard tag from list_scorecards.","maxLength":200,"title":"Tag","type":"string"},"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results per page (1 to 1000).","title":"Page Size"}},"required":["tag"],"title":"get_scorecard_scoresArguments","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_entity_scorecards":{"post":{"operationId":"get_entity_scorecards","summary":"Get an entity's score on each scorecard that applies to it. Use for \"Which scorecards is payments-service failing in Cor","description":"Get an entity's score on each scorecard that applies to it. Use for \"Which scorecards is payments-service failing in Cortex\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tag_or_id":{"description":"Entity tag (the x-cortex-tag value) or its 18-character id.","maxLength":200,"title":"Tag Or Id","type":"string"}},"required":["tag_or_id"],"title":"get_entity_scorecardsArguments","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_teams":{"post":{"operationId":"list_teams","summary":"List teams (Cortex teams and identity-provider groups) with tag, type and linked catalog entity. Use for \"Which teams ex","description":"List teams (Cortex teams and identity-provider groups) with tag, type and linked catalog entity. Use for \"Which teams exist in Cortex\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_tag":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Return only this team (its tag).","title":"Team Tag"}},"title":"list_teamsArguments","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_initiatives":{"post":{"operationId":"list_initiatives","summary":"List initiatives (time-boxed scorecard improvement campaigns) with target date, scorecard and draft flag. Use for \"Which","description":"List initiatives (time-boxed scorecard improvement campaigns) with target date, scorecard and draft flag. Use for \"Which initiatives are open in Cortex and when are they due\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many results per page (1 to 1000).","title":"Page Size"}},"title":"list_initiativesArguments","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_entity_deployments":{"post":{"operationId":"list_entity_deployments","summary":"List recorded deployments of one entity (deploy, scale, rollback, restart) with environment, commit sha and time. Use fo","description":"List recorded deployments of one entity (deploy, scale, rollback, restart) with environment, commit sha and time. Use for \"What were the latest deployments of payments-service in Cortex\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tag_or_id":{"description":"Entity tag (the x-cortex-tag value) or its 18-character id.","maxLength":200,"title":"Tag Or Id","type":"string"},"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results per page (1 to 1000).","title":"Page Size"}},"required":["tag_or_id"],"title":"list_entity_deploymentsArguments","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_deployments":{"post":{"operationId":"search_deployments","summary":"Search deployments across all entities, filtered by environment, type, entity and UTC time range. Use for \"Which rollbac","description":"Search deployments across all entities, filtered by environment, type, entity and UTC time range. Use for \"Which rollbacks happened in prod last week according to Cortex\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"environments":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated environment names, exact match.","title":"Environments"},"types":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated deploy types: DEPLOY, ROLLBACK, SCALE, RESTART.","title":"Types"},"entity_tag_or_ids":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated entity tags or ids.","title":"Entity Tag Or Ids"},"timestamp_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only deploys at or after this UTC time, for example 2026-06-22T00:00:00.","title":"Timestamp After"},"timestamp_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only deploys at or before this UTC time.","title":"Timestamp Before"},"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results per page (1 to 1000).","title":"Page Size"}},"title":"search_deploymentsArguments","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_workflows":{"post":{"operationId":"list_workflows","summary":"List workflows (self-service automations) with description, draft flag, API-runnable flag and update time. Use for \"Whic","description":"List workflows (self-service automations) with description, draft flag, API-runnable flag and update time. Use for \"Which self-service workflows exist in Cortex\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only workflows whose name or description contains this text.","title":"Search Query"},"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results per page (1 to 1000).","title":"Page Size"}},"title":"list_workflowsArguments","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_integration_status":{"post":{"operationId":"get_integration_status","summary":"List installed integrations with their alias, categories and the result of the latest connection check. Use for \"Are all","description":"List installed integrations with their alias, categories and the result of the latest connection check. Use for \"Are all our Cortex integrations connected\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_integration_statusArguments","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}}}}