Create an attachment (link) for an existing issue. The URL acts as an idempotent identifier - creating the same URL on the same issue will update the existing attachment.
Download a file from Linear’s authenticated storage (uploads.linear.app). Use this to download images embedded in issue descriptions. The image URLs are found in markdown format like in issue description fields. By default returns a downloadUrl for streaming. Set stream=false for small files (<2MB) to get immediate base64 content.
Team ID where the issue will be created. Tip: Use linear_get_teams to discover available teams.
projectId
string
No
—
Project ID to associate the issue with. Tip: Use linear_get_projects to discover available projects.
priority
number
No
—
Priority level (1-4)
assigneeId
string
No
—
User ID to assign the issue to. Tip: Use linear_get_users to find available users.
labelIds
string[]
No
—
Array of label IDs to apply. Tip: Use linear_get_labels to discover available labels.
stateId
string
No
—
Workflow state ID. Tip: Use linear_get_workflow_states to find available states for the team.
estimate
number
No
—
Estimate in story points
Show inputSchema
{ "type": "object", "properties": { "PCID": { "type": "string", "description": "Pink Connect ID" }, "title": { "type": "string", "description": "Issue title" }, "description": { "type": "string", "description": "Issue description" }, "teamId": { "type": "string", "description": "Team ID where the issue will be created. Tip: Use linear_get_teams to discover available teams." }, "projectId": { "type": "string", "description": "Project ID to associate the issue with. Tip: Use linear_get_projects to discover available projects." }, "priority": { "type": "number", "description": "Priority level (1-4)" }, "assigneeId": { "type": "string", "description": "User ID to assign the issue to. Tip: Use linear_get_users to find available users." }, "labelIds": { "type": "array", "items": { "type": "string" }, "description": "Array of label IDs to apply. Tip: Use linear_get_labels to discover available labels." }, "stateId": { "type": "string", "description": "Workflow state ID. Tip: Use linear_get_workflow_states to find available states for the team." }, "estimate": { "type": "number", "description": "Estimate in story points" } }, "required": [ "PCID", "title", "teamId" ]}
New workflow state ID. Tip: Use linear_get_workflow_states to find available states.
assigneeId
string
No
—
New assignee user ID. Tip: Use linear_get_users to find available users.
labelIds
string[]
No
—
New array of label IDs. Tip: Use linear_get_labels to discover available labels.
estimate
number
No
—
New estimate in story points
projectId
string
No
—
Project ID to add the issue to. Tip: Use linear_get_projects to find available projects.
Show inputSchema
{ "type": "object", "properties": { "PCID": { "type": "string", "description": "Pink Connect ID" }, "issueId": { "type": "string", "description": "Issue ID to update" }, "title": { "type": "string", "description": "New issue title" }, "description": { "type": "string", "description": "New issue description" }, "priority": { "type": "number", "description": "New priority level (1-4)" }, "stateId": { "type": "string", "description": "New workflow state ID. Tip: Use linear_get_workflow_states to find available states." }, "assigneeId": { "type": "string", "description": "New assignee user ID. Tip: Use linear_get_users to find available users." }, "labelIds": { "type": "array", "items": { "type": "string" }, "description": "New array of label IDs. Tip: Use linear_get_labels to discover available labels." }, "estimate": { "type": "number", "description": "New estimate in story points" }, "projectId": { "type": "string", "description": "Project ID to add the issue to. Tip: Use linear_get_projects to find available projects." } }, "required": [ "PCID", "issueId" ]}
Create a new label for organizing issuesParameters:
Parameter
Type
Required
Default
Description
name
string
Yes
—
Label name
color
string
No
—
Label color as hex code (e.g., “#ff0000”). If not provided, Linear will assign a default color.
description
string
No
—
Label description
teamId
string
No
—
Team ID to scope the label to a specific team. If not provided, creates a workspace-level label. Tip: Use linear_get_teams to find team IDs.
Show inputSchema
{ "type": "object", "properties": { "PCID": { "type": "string", "description": "Pink Connect ID" }, "name": { "type": "string", "description": "Label name" }, "color": { "type": "string", "description": "Label color as hex code (e.g., \"#ff0000\"). If not provided, Linear will assign a default color." }, "description": { "type": "string", "description": "Label description" }, "teamId": { "type": "string", "description": "Team ID to scope the label to a specific team. If not provided, creates a workspace-level label. Tip: Use linear_get_teams to find team IDs." } }, "required": [ "PCID", "name" ]}
Create an attachment (link) for an existing issue. The URL acts as an idempotent identifier - creating the same URL on the same issue will update the existing attachment.Parameters:
Parameter
Type
Required
Default
Description
issueId
string
Yes
—
Issue ID to attach the link to
url
string
Yes
—
URL of the link to attach (acts as idempotent identifier)
title
string
No
—
Title for the attachment
subtitle
string
No
—
Subtitle for the attachment
iconUrl
string
No
—
Icon URL for the attachment (must be png or jpg format)
metadata
object
No
—
Key-value metadata to store with the attachment
Show inputSchema
{ "type": "object", "properties": { "PCID": { "type": "string", "description": "Pink Connect ID" }, "issueId": { "type": "string", "description": "Issue ID to attach the link to" }, "url": { "type": "string", "description": "URL of the link to attach (acts as idempotent identifier)" }, "title": { "type": "string", "description": "Title for the attachment" }, "subtitle": { "type": "string", "description": "Subtitle for the attachment" }, "iconUrl": { "type": "string", "description": "Icon URL for the attachment (must be png or jpg format)" }, "metadata": { "type": "object", "additionalProperties": true, "description": "Key-value metadata to store with the attachment" } }, "required": [ "PCID", "issueId", "url" ]}
Download a file from Linear’s authenticated storage (uploads.linear.app). Use this to download images embedded in issue descriptions. The image URLs are found in markdown format like in issue description fields. By default returns a downloadUrl for streaming. Set stream=false for small files (<2MB) to get immediate base64 content.Parameters:
Parameter
Type
Required
Default
Description
url
string
Yes
—
The full URL to download (must be an https://uploads.linear.app/ URL). Found in issue descriptions as markdown image references.
stream
boolean
No
true
RECOMMENDED: true (default). Returns downloadUrl + auth headers for streaming. Set to false only for small files (<2MB) requiring immediate base64 content.
extractText
boolean
No
true
Automatically extracts text from supported formats (PDF, DOCX, PPTX, XLSX) and includes it in the response. Set to false to skip extraction.
Show inputSchema
{ "type": "object", "properties": { "PCID": { "type": "string", "description": "Pink Connect ID" }, "url": { "type": "string", "description": "The full URL to download (must be an https://uploads.linear.app/ URL). Found in issue descriptions as markdown image references." }, "stream": { "type": "boolean", "default": true, "description": "RECOMMENDED: true (default). Returns downloadUrl + auth headers for streaming. Set to false only for small files (<2MB) requiring immediate base64 content." }, "extractText": { "type": "boolean", "default": true, "description": "Automatically extracts text from supported formats (PDF, DOCX, PPTX, XLSX) and includes it in the response. Set to false to skip extraction." } }, "required": [ "PCID", "url" ]}
Create a Linear webhook that will send eventsParameters:
Parameter
Type
Required
Default
Description
triggerType
string
Yes
—
Type of trigger to create
webhookUrl
string
Yes
—
The webhook URL where Linear should send events
label
string
Yes
—
Label/name for the Linear webhook
resourceTypes
any
Yes
—
Event types to subscribe to. Supports multiple formats: PascalCase (IssueLabel), lowercase (issuelabel), kebab-case (issue-label), or snake_case (issue_label). Common types: Issue, Comment, Project, IssueLabel, WorkflowState. Duplicates are automatically removed. Can be passed as JSON string array or array.
filter
any
Yes
—
Optional filter for events. Can include teamId (e.g., {“teamId”: “team-id”}) to limit webhook to a specific team. If not provided, webhook will listen to all public teams. Tip: Use linear_get_teams to discover available team IDs.
Show inputSchema
{ "type": "object", "properties": { "PCID": { "type": "string", "description": "Pink Connect ID" }, "triggerType": { "type": "string", "enum": [ "linear_issue_events" ], "description": "Type of trigger to create" }, "webhookUrl": { "type": "string", "description": "The webhook URL where Linear should send events" }, "label": { "type": "string", "description": "Label/name for the Linear webhook" }, "resourceTypes": { "type": "effects", "description": "Event types to subscribe to. Supports multiple formats: PascalCase (IssueLabel), lowercase (issuelabel), kebab-case (issue-label), or snake_case (issue_label). Common types: Issue, Comment, Project, IssueLabel, WorkflowState. Duplicates are automatically removed. Can be passed as JSON string array or array." }, "filter": { "type": "effects", "description": "Optional filter for events. Can include teamId (e.g., {\"teamId\": \"team-id\"}) to limit webhook to a specific team. If not provided, webhook will listen to all public teams. Tip: Use linear_get_teams to discover available team IDs." } }, "required": [ "PCID", "triggerType", "webhookUrl", "label", "resourceTypes", "filter" ]}
Update an existing Linear webhook (can update label and event types)Parameters:
Parameter
Type
Required
Default
Description
webhookId
string
Yes
—
The ID of the webhook to update
label
string
No
—
New label for the webhook
resourceTypes
any
Yes
—
New event types to subscribe to. Supports multiple formats: PascalCase (IssueLabel), lowercase (issuelabel), kebab-case (issue-label), or snake_case (issue_label). Duplicates are automatically removed. Can be passed as JSON string array or array.
Show inputSchema
{ "type": "object", "properties": { "PCID": { "type": "string", "description": "Pink Connect ID" }, "webhookId": { "type": "string", "description": "The ID of the webhook to update" }, "label": { "type": "string", "description": "New label for the webhook" }, "resourceTypes": { "type": "effects", "description": "New event types to subscribe to. Supports multiple formats: PascalCase (IssueLabel), lowercase (issuelabel), kebab-case (issue-label), or snake_case (issue_label). Duplicates are automatically removed. Can be passed as JSON string array or array." } }, "required": [ "PCID", "webhookId", "resourceTypes" ]}
Optional webhook ID to delete (if not provided, will be retrieved from metadata)
Show inputSchema
{ "type": "object", "properties": { "PCID": { "type": "string", "description": "Pink Connect ID" }, "triggerId": { "type": "string", "description": "The ID of the webhook to delete" }, "webhookId": { "type": "string", "description": "Optional webhook ID to delete (if not provided, will be retrieved from metadata)" } }, "required": [ "PCID", "triggerId" ]}