Linear
OAuth 2.0 developer_toolsproject_managementLinear
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Read issues — fetch issues, projects, cycles, and team details
- Create and update issues — file new issues, update status, set priority, and assign teammates
- Manage projects — create and update project metadata and milestones
- Search — find issues by keyword, assignee, label, or state
Authentication
Section titled “Authentication”This connector uses OAuth 2.0. Scalekit acts as the OAuth client: it redirects your user to Linear, obtains an access token, and automatically refreshes it before it expires. Your agent code never handles tokens directly — you only pass a connectionName and a user identifier.
You supply your Linear Connected App credentials (Client ID + Secret) once per environment in the Scalekit dashboard.
Set up the connector
Register your Scalekit environment with the Linear connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:
-
Set up auth redirects
-
In Scalekit dashboard, go to Agent Auth → Create Connection. Find Linear and click Create. Copy the redirect URI. It looks like
https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.
-
Log in to Linear and go to Settings → API → OAuth applications.
-
Click New application, enter an application name and description, then paste the redirect URI from Scalekit into the Callback URLs field. Click Create application.

-
-
Get client credentials
- In your Linear OAuth application, copy the Client ID and Client Secret.
-
Add credentials in Scalekit
-
In Scalekit dashboard, go to Agent Auth → Connections and open the connection you created.
-
Enter your credentials:
- Client ID (from above)
- Client Secret (from above)
- Permissions (scopes — see Linear OAuth scopes reference)

-
Click Save.
-
Code examples
Connect a user’s Linear account and make API calls on their behalf — Scalekit handles OAuth and token management automatically.
Proxy API Calls
import { ScalekitClient } from '@scalekit-sdk/node';import 'dotenv/config';
const connectionName = 'linear'; // get your connection name from connection configurationsconst identifier = 'user_123'; // your unique user identifier
// Get your credentials from app.scalekit.com → Developers → Settings → API Credentialsconst scalekit = new ScalekitClient( process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);const actions = scalekit.actions;
// Authenticate the userconst { link } = await actions.getAuthorizationLink({ connectionName, identifier,});console.log('🔗 Authorize Linear:', link);process.stdout.write('Press Enter after authorizing...');await new Promise(r => process.stdin.once('data', r));
// Make a GraphQL request via Scalekit proxyconst result = await actions.request({ connectionName, identifier, path: '/graphql', method: 'POST', body: JSON.stringify({ query: '{ viewer { id name email } }' }),});console.log(result);import scalekit.client, os, jsonfrom dotenv import load_dotenvload_dotenv()
connection_name = "linear" # get your connection name from connection configurationsidentifier = "user_123" # your unique user identifier
# Get your credentials from app.scalekit.com → Developers → Settings → API Credentialsscalekit_client = scalekit.client.ScalekitClient( client_id=os.getenv("SCALEKIT_CLIENT_ID"), client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"), env_url=os.getenv("SCALEKIT_ENV_URL"),)actions = scalekit_client.actions
# Authenticate the userlink_response = actions.get_authorization_link( connection_name=connection_name, identifier=identifier)# present this link to your user for authorization, or click it yourself for testingprint("🔗 Authorize Linear:", link_response.link)input("Press Enter after authorizing...")
# Make a GraphQL request via Scalekit proxyresult = actions.request( connection_name=connection_name, identifier=identifier, path="/graphql", method="POST", body=json.dumps({"query": "{ viewer { id name email } }"}))print(result)Tool list
Section titled “Tool list” linear_graphql_query Execute a custom GraphQL query or mutation against the Linear API. Allows running any valid GraphQL operation with variables support for advanced use cases. 2 params
Execute a custom GraphQL query or mutation against the Linear API. Allows running any valid GraphQL operation with variables support for advanced use cases.
query string required The GraphQL query or mutation to execute variables object optional Variables to pass to the GraphQL query linear_issue_create Create a new issue in Linear using the issueCreate mutation. Requires a team ID and title at minimum. 9 params
Create a new issue in Linear using the issueCreate mutation. Requires a team ID and title at minimum.
teamId string required ID of the team to create the issue in title string required Title of the issue assigneeId string optional ID of the user to assign the issue to description string optional Description of the issue estimate string optional Story point estimate for the issue labelIds array optional Array of label IDs to apply to the issue priority string optional Priority level of the issue (1-4, where 1 is urgent) projectId string optional ID of the project to associate the issue with stateId string optional ID of the workflow state to set linear_issue_update Update an existing issue in Linear. You can update title, description, priority, state, and assignee. 6 params
Update an existing issue in Linear. You can update title, description, priority, state, and assignee.
issueId string required ID of the issue to update assigneeId string optional ID of the user to assign the issue to description string optional New description for the issue priority string optional Priority level of the issue (1-4, where 1 is urgent) stateId string optional ID of the workflow state to set title string optional New title for the issue linear_issues_list List issues in Linear using the issues query with simple filtering and pagination support. 8 params
List issues in Linear using the issues query with simple filtering and pagination support.
after string optional Cursor for pagination (returns issues after this cursor) assignee string optional Filter by assignee email (e.g., 'user@example.com') before string optional Cursor for pagination (returns issues before this cursor) first integer optional Number of issues to return (pagination) labels array optional Filter by label names (array of strings) priority string optional Filter by priority level (1=Urgent, 2=High, 3=Medium, 4=Low) project string optional Filter by project name (e.g., 'Q4 Goals') state string optional Filter by state name (e.g., 'In Progress', 'Done')