Linear

Learn how to use Linear with Composio

Overview

SLUG: LINEAR

Description

Linear is a streamlined issue tracking and project planning tool for modern teams, featuring fast workflows, keyboard shortcuts, and GitHub integrations

Authentication Details

client_id
stringRequired
client_secret
stringRequired
full
stringDefaults to https://api.linear.appRequired
oauth_redirect_uri
stringDefaults to https://backend.composio.dev/api/v1/auth-apps/add
scopes
stringDefaults to admin,read,write,issues:create,comments:create
bearer_token
string
full
stringDefaults to https://api.linear.appRequired
generic_api_key
stringRequired

Connecting to Linear

Create an auth config

Use the dashboard to create an auth config for the Linear toolkit. This allows you to connect multiple Linear accounts to Composio for agents to use.

1

Select App

Navigate to the Linear toolkit page and click “Setup Integration”.

2

Configure Auth Config Settings

Select among the supported auth schemes of and configure them here.

3

Create and Get auth config ID

Click “Create Integration”. After creation, copy the displayed ID starting with ac_. This is your auth config ID. This is not a sensitive ID — you can save it in environment variables or a database. This ID will be used to create connections to the toolkit for a given user.

Connect Your Account

Using OAuth2

1from composio import Composio
2from composio.types import auth_scheme
3
4# Replace these with your actual values
5linear_auth_config_id = "ac_YOUR_LINEAR_CONFIG_ID" # Auth config ID created above
6user_id = "0000-0000-0000" # UUID from database/application
7
8composio = Composio()
9
10
11def authenticate_toolkit(user_id: str, auth_config_id: str):
12 connection_request = composio.connected_accounts.initiate(
13 user_id=user_id,
14 auth_config_id=auth_config_id,
15 )
16
17 print(
18 f"Visit this URL to authenticate Linear: {connection_request.redirect_url}"
19 )
20
21 # This will wait for the auth flow to be completed
22 connection_request.wait_for_connection(timeout=15)
23 return connection_request.id
24
25
26connection_id = authenticate_toolkit(user_id, linear_auth_config_id)
27
28# You can also verify the connection status using:
29connected_account = composio.connected_accounts.get(connection_id)
30print(f"Connected account: {connected_account}")

Using API Key

1from composio import Composio
2from composio.types import auth_scheme
3
4# Replace these with your actual values
5linear_auth_config_id = "ac_YOUR_LINEAR_CONFIG_ID" # Auth config ID created above
6user_id = "0000-0000-0000" # UUID from database/app
7
8composio = Composio()
9
10def authenticate_toolkit(user_id: str, auth_config_id: str):
11 # Replace this with a method to retrieve an API key from the user.
12 # Or supply your own.
13 user_api_key = input("[!] Enter API key")
14
15 connection_request = composio.connected_accounts.initiate(
16 user_id=user_id,
17 auth_config_id=auth_config_id,
18 config={"auth_scheme": "API_KEY", "val": user_api_key}
19 )
20
21 # API Key authentication is immediate - no redirect needed
22 print(f"Successfully connected Linear for user {user_id}")
23 print(f"Connection status: {connection_request.status}")
24
25 return connection_request.id
26
27
28connection_id = authenticate_toolkit(user_id, linear_auth_config_id)
29
30# You can verify the connection using:
31connected_account = composio.connected_accounts.get(connection_id)
32print(f"Connected account: {connected_account}")

Tools

Executing tools

To prototype you can execute some tools to see the responses and working on the Linear toolkit’s playground

Python
1from composio import Composio
2from openai import OpenAI
3import json
4
5openai = OpenAI()
6composio = Composio()
7
8# User ID must be a valid UUID format
9user_id = "0000-0000-0000" # Replace with actual user UUID from your database
10
11tools = composio.tools.get(user_id=user_id, toolkits=["LINEAR"])
12
13print("[!] Tools:")
14print(json.dumps(tools))
15
16def invoke_llm(task = "What can you do?"):
17 completion = openai.chat.completions.create(
18 model="gpt-4o",
19 messages=[
20 {
21 "role": "user",
22 "content": task, # Your task here!
23 },
24 ],
25 tools=tools,
26 )
27
28 # Handle Result from tool call
29 result = composio.provider.handle_tool_calls(user_id=user_id, response=completion)
30 print(f"[!] Completion: {completion}")
31 print(f"[!] Tool call result: {result}")
32
33invoke_llm()

Tool List

Tool Name: Remove label from Linear issue

Description

Removes a specified label from an existing linear issue using their ids; successful even if the label isn't on the issue.

Action Parameters

issue_id
stringRequired
label_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Update issue

Description

Updates an existing linear issue using its `issue id`; requires at least one other attribute for modification, and all provided entity ids (for state, assignee, labels, etc.) must be valid.

Action Parameters

assignee_id
string
description
string
due_date
string
estimate
integer
issue_id
stringRequired
label_ids
array
parent_id
string
priority
integer
project_id
string
state_id
string
team_id
string
title
string

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Create linear attachment

Description

Creates a new attachment and associates it with a specific, existing linear issue.

Action Parameters

issue_id
stringRequired
subtitle
stringRequired
title
stringRequired
url
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Create a comment

Description

Creates a new comment on a specified linear issue.

Action Parameters

body
stringRequired
issue_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Create linear issue

Description

Creates a new issue in a specified linear project and team, requiring a title and description, and allowing for optional properties like assignee, state, priority, cycle, and due date.

Action Parameters

assignee_id
string
cycle_id
string
description
stringRequired
due_date
string
estimate
integer
label_ids
array
parent_id
string
priority
integer
project_id
stringRequired
state_id
string
team_id
stringRequired
title
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get create issue default params

Description

Fetches a linear team's default issue estimate and state, useful for pre-filling new issue forms.

Action Parameters

team_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Create a label

Description

Creates a new label in linear for a specified team, used to categorize and organize issues.

Action Parameters

color
stringRequired
description
string
name
stringRequired
team_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Delete issue

Description

Archives an existing linear issue by its id, which is linear's standard way of deleting issues; the operation is idempotent.

Action Parameters

issue_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Download issue attachments

Description

Downloads a specific attachment from a linear issue; the `file name` must include the correct file extension.

Action Parameters

attachment_id
stringRequired
file_name
stringRequired
issue_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get cycles by team ID

Description

Retrieves all cycles for a specified linear team id; cycles are time-boxed work periods (like sprints) and the team id must correspond to an existing team.

Action Parameters

team_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get Linear issue

Description

Retrieves an existing linear issue's comprehensive details, including title, description, attachments, and comments.

Action Parameters

issue_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get all cycles

Description

Retrieves all cycles (time-boxed iterations for work) from the linear account; no filters are applied.

Action Parameters

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: List Linear issues

Description

Lists non-archived linear issues; if project id is not specified, issues from all accessible projects are returned.

Action Parameters

after
string
first
integerDefaults to 10
project_id
string

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get labels by team

Description

Retrieves all labels associated with a given team id in linear; the team id must refer to an existing team.

Action Parameters

team_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: List linear projects

Description

Retrieves all projects from the linear account.

Action Parameters

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: List Linear states

Description

Retrieves all workflow states for a specified team in linear, representing the stages an issue progresses through in that team's workflow.

Action Parameters

team_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get teams by project

Description

Retrieves all teams, including their members, and filters each team's associated projects by the provided 'project id'.

Action Parameters

project_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Run Query or Mutation

Description

Executes a user-provided graphql query or mutation against the linear api, intended for advanced data operations or those not covered by other specific actions.

Action Parameters

query_or_mutation
stringRequired
variables
objectRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired