{"openapi":"3.1.0","info":{"title":"Linear Config (BYOK) API","version":"0.1.0","description":"Linear Config (BYOK) lets an AI assistant read your own Linear Config data through the Linear Config API with a key you supply (personal API key). Read-only: 10 tools (get_organization, list_project_labels, list_initiative_labels, list_templates, list_integrations, list_customer_tiers, list_release_stages, list_time_schedules, list_custom_emojis, list_team_sla_configurations). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-linear-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-linear-config/docs"},"termsOfService":"https://connectorbay.com/byok-linear-config/terms"},"servers":[{"url":"https://byok-linear-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-linear-config/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/get_organization":{"post":{"operationId":"get_organization","summary":"Show the Linear workspace: name, URL key, creation date, user count, created issue count, customer count, working days, ","description":"Show the Linear workspace: name, URL key, creation date, user count, created issue count, customer count, working days, fiscal year start and which features (customers, roadmap, releases, SAML, SCIM) are on. Use for \"How big is our Linear workspace and which features are enabled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_organizationArguments","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_project_labels":{"post":{"operationId":"list_project_labels","summary":"List Linear project labels with color, description, whether the label is a group, parent group and when last applied. On","description":"List Linear project labels with color, description, whether the label is a group, parent group and when last applied. One page per call. Use for \"Which project labels exist in Linear\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor copied from pageInfo.endCursor of the previous answer to get the next page; leave empty for the first page.","title":"After"},"order_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Order: updatedAt (most recently changed first) or createdAt (newest first).","title":"Order By"}},"title":"list_project_labelsArguments","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_initiative_labels":{"post":{"operationId":"list_initiative_labels","summary":"List Linear initiative labels with color, description, whether the label is a group, parent group and when last applied.","description":"List Linear initiative labels with color, description, whether the label is a group, parent group and when last applied. One page per call. Use for \"Which initiative labels exist in Linear\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor copied from pageInfo.endCursor of the previous answer to get the next page; leave empty for the first page.","title":"After"},"order_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Order: updatedAt (most recently changed first) or createdAt (newest first).","title":"Order By"}},"title":"list_initiative_labelsArguments","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_templates":{"post":{"operationId":"list_templates","summary":"List the Linear templates (issue, project and document templates) with type, description, team and when last applied. Te","description":"List the Linear templates (issue, project and document templates) with type, description, team and when last applied. Template bodies are not returned. Use for \"Which templates does Linear have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_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_integrations":{"post":{"operationId":"list_integrations","summary":"List the integrations connected to the Linear workspace (service name such as github or slack, team and dates). No crede","description":"List the integrations connected to the Linear workspace (service name such as github or slack, team and dates). No credentials or settings. One page per call. Use for \"Which integrations are connected to Linear\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor copied from pageInfo.endCursor of the previous answer to get the next page; leave empty for the first page.","title":"After"},"order_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Order: updatedAt (most recently changed first) or createdAt (newest first).","title":"Order By"}},"title":"list_integrationsArguments","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_customer_tiers":{"post":{"operationId":"list_customer_tiers","summary":"List the customer tiers defined in Linear (for example Enterprise or Free) with color, position and description. One pag","description":"List the customer tiers defined in Linear (for example Enterprise or Free) with color, position and description. One page per call. Use for \"Which customer tiers does Linear define\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor copied from pageInfo.endCursor of the previous answer to get the next page; leave empty for the first page.","title":"After"},"order_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Order: updatedAt (most recently changed first) or createdAt (newest first).","title":"Order By"}},"title":"list_customer_tiersArguments","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_release_stages":{"post":{"operationId":"list_release_stages","summary":"List the Linear release stages (Planned, In progress, Completed ...) with type, color, position, frozen flag and release","description":"List the Linear release stages (Planned, In progress, Completed ...) with type, color, position, frozen flag and release pipeline. One page per call. Use for \"Which release stages exist in Linear\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor copied from pageInfo.endCursor of the previous answer to get the next page; leave empty for the first page.","title":"After"},"order_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Order: updatedAt (most recently changed first) or createdAt (newest first).","title":"Order By"}},"title":"list_release_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_time_schedules":{"post":{"operationId":"list_time_schedules","summary":"List the on-call or triage time schedules of the Linear workspace (name, source URL and dates, no entries). One page per","description":"List the on-call or triage time schedules of the Linear workspace (name, source URL and dates, no entries). One page per call. Use for \"Which time schedules are set up in Linear\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor copied from pageInfo.endCursor of the previous answer to get the next page; leave empty for the first page.","title":"After"},"order_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Order: updatedAt (most recently changed first) or createdAt (newest first).","title":"Order By"}},"title":"list_time_schedulesArguments","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_custom_emojis":{"post":{"operationId":"list_custom_emojis","summary":"List the custom emojis uploaded to the Linear workspace (name, source and creation date). One page per call. Use for \"Wh","description":"List the custom emojis uploaded to the Linear workspace (name, source and creation date). One page per call. Use for \"Which custom emojis does our Linear workspace have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor copied from pageInfo.endCursor of the previous answer to get the next page; leave empty for the first page.","title":"After"},"order_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Order: updatedAt (most recently changed first) or createdAt (newest first).","title":"Order By"}},"title":"list_custom_emojisArguments","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_team_sla_configurations":{"post":{"operationId":"list_team_sla_configurations","summary":"List the SLA rules of a Linear team: name, SLA duration, type, start mode and whether the rule removes an SLA. Needs a p","description":"List the SLA rules of a Linear team: name, SLA duration, type, start mode and whether the rule removes an SLA. Needs a plan with SLAs. Use for \"Which SLA rules does Linear team 0f1e2d3c have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"description":"Linear team id (a UUID), from list_teams in the Linear connector.","maxLength":60,"title":"Team Id","type":"string"}},"required":["team_id"],"title":"list_team_sla_configurationsArguments","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}}}}