CONNECT APP
Build with Linear
Productivity
- OAuth
MCP
Give your agent Linear tools
Every Linear action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Linear account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "linear",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Create Comment:
const result = await mcp.callTool({
name: "linear-create-comment",
arguments: {
teamId: "Team",
issueId: "Issue",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "linear",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Create Comment:
result = await session.call_tool("linear-create-comment", {
"teamId": "Team",
"issueId": "Issue",
})API PROXY
Call the Linear API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Linear API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.linear.app/graphql",
})
// Any allowed Linear endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.linear.app/graphql
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkubGluZWFyLmFwcC9ncmFwaHFs?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Linear actions from your backend
Connect a user's Linear account once, then run Create Comment on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "linear-create-comment",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
linear: { authProvisionId: "apn_xxxxxxx" },
teamId: "Team",
issueId: "Issue",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="linear-create-comment",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"linear": {"authProvisionId": "apn_xxxxxxx"},
"teamId": "Team",
"issueId": "Issue",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "linear-create-comment",
"configured_props": {
"linear": { "authProvisionId": "apn_xxxxxxx" },
"teamId": "Team",
"issueId": "Issue"
}
}'TOOLS
Linear actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Create Comment
actionCreate a comment in Linear. See the documentationWritev0.0.2 -
Create Initiative
actionCreate an initiative in Linear. See the documentation.Writev0.0.2 -
Create Issue
actionCreates a new issue in Linear. Requires team ID and title. Optional: description, assignee, project, state. Returns response object with success status and issue details. Uses OAuth authentication. See Linear docs for additional info here.Writev0.4.16 -
Create Project
actionCreate a project in Linear. See the documentation.Writev0.0.4 -
Get Current User
actionRetrieve rich context about the authenticated Linear user, including core profile fields, recent timestamps, direct team memberships, and high-level organization settings. Returns the user object, a paginated team list (with names, keys, cycle configs, etc.), associated team memberships, and organization metadata such as auth defaults and SCIM/SAML flags. Use this when your workflow or agent needs to understand who is currently authenticated, which teams they belong to, or what workspace policies might influence subsequent Linear actions. See Linear's GraphQL viewer docs here.Read-onlyv0.0.6 -
Get Issue
actionRetrieves a Linear issue by its ID. Returns complete issue details including title, description, state, assignee, team, project, labels, and timestamps. Uses OAuth authentication. See Linear docs for additional info here.Read-onlyv0.1.16 -
Get Teams
actionRetrieves all teams in your Linear workspace. Returns array of team objects with details like ID, name, and key. Supports pagination with configurable limit. Uses OAuth authentication. See Linear docs for additional info here.Read-onlyv0.2.17 -
Get View Issues
actionGet issues from a custom view in Linear. See the documentation.Read-onlyv0.0.2 -
List Comments
actionList comments in Linear. See the documentation.Read-onlyv0.0.2 -
List Initiatives
actionList initiatives in Linear. See the documentation.Read-onlyv0.0.2 -
List Projects
actionList projects in Linear. See the documentation.Read-onlyv0.0.5 -
List Views
actionList views in Linear. See the documentation.Read-onlyv0.0.2 -
List Workflow States
actionList workflow states (statuses) in Linear. Returns state IDs, names, types (e.g. backlog, started, completed, cancelled), and team info. Optionally filter by team. Uses OAuth authentication. See the documentation.Read-onlyv0.0.1 -
Remove Label from Issue
actionRemove a label from an issue in Linear. See the documentation.Writev0.0.2 -
Search Issues
actionSearches Linear issues by team, project, assignee, labels, state, or text query. Supports pagination, ordering, and archived issues. Returns array of matching issues. Uses OAuth authentication. See Linear docs for additional info here.Read-onlyv0.2.17 -
Update Initiative
actionUpdate an initiative in Linear. See the documentation.Writev0.0.2 -
Update Issue
actionUpdates an existing Linear issue. Can modify title, description, assignee, state, project, team, labels, priority, and dates. Returns updated issue details. Uses OAuth authentication. See Linear docs for additional info here.Writev0.1.16
-
Issue Status Updated (Instant)
triggerEmit new event when an issue's workflow state changes (e.g., Todo to In Progress). Returns issue with previous and current state info. Can filter by specific target state. Uses OAuth authentication. See Linear docs for additional info here.Instantv0.1.21 -
Issue Updated (Instant)
triggerEmit new event when any issue is updated in Linear. Provides complete issue details with changes. Supports filtering by team and project. Includes all updates except status changes. Uses OAuth authentication. See Linear docs for additional info here.Instantv0.3.20 -
New Comment Created (Instant)
triggerEmit new event when a new comment is added to an issue in Linear. Returns comment details including content, author, issue reference, and timestamps. Supports filtering by team. Uses OAuth authentication. See Linear docs for additional info here.Instantv0.1.19 -
New Issue Created (Instant)
triggerEmit new event when a new issue is created in Linear. Provides complete issue details including title, description, team, assignee, state, and timestamps. Supports filtering by team and project. Uses OAuth authentication. See Linear docs for additional info here.Instantv0.3.20 -
New Project Update Written (Instant)
triggerEmit new event when a project update (status report) is created in Linear. Returns update content, author, project details, and health status. Filters by team and optionally by project. Uses OAuth authentication. See Linear docs for additional info here.Instantv0.0.12 -
Project Updated (Instant)
triggerEmit new event when a project is updated in Linear. Returns project details including name, description, status, dates, and team info. Supports filtering by specific teams. Uses OAuth authentication. See Linear docs for additional info here.Instantv0.0.12
MULTI-APP
Use Linear with other popular apps
Most products don't stop at one integration. Pair Linear with the other apps your users rely on, and ship use cases that span both.
- App slug
- linear
- Authentication
- OAuth
- Categories
- Productivity
- Actions
- 17
- Triggers
- 6
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed Linear OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- read
- write
- issues:create
- comments:create