MCP App Store
by KeenEthics

Overview

Manage issues, projects, and team workflows in Linear with natural language. Create and update issues, track progress, plan cycles, and coordinate development tasks using Linear’s streamlined project management interface for faster, more efficient workflows.

Tools

create_attachment

ChatGPT
Create a new attachment on a specific Linear issue by uploading base64-encoded content.

create_attachment_from_upload

ChatGPT
Link an already-uploaded Linear assetUrl to an existing issue as an attachment. Use this only after: 1. prepare_attachment_upload returned an assetUrl and uploadRequest. 2. The client successfully PUT raw file bytes to uploadRequest.url. This tool does not upload file content. It only creates the Linear attachment row. If the direct upload failed or the signed URL expired, rerun prepare_attachment_upload and upload again.

create_initiative_label

ChatGPT
Create a new Linear initiative label

create_issue_label

ChatGPT
Create a new Linear issue label

delete_attachment

ChatGPT
Delete an attachment by ID

delete_comment

ChatGPT
Delete a comment from a Linear issue

delete_customer

ChatGPT
Delete a customer in Linear

delete_customer_need

ChatGPT
Archive a customer need in Linear

delete_diff_comment

ChatGPT
Delete a comment or persisted draft from a Linear diff

delete_status_update

ChatGPT
Delete (archive) a project or initiative status update.

extract_images

ChatGPT
Extract and fetch images from markdown content. Use this to view screenshots, diagrams, or other images embedded in Linear issues, comments, or documents. Pass the markdown content (e.g., issue description) and receive the images as viewable data.

fetch

ChatGPT
Fetch a Linear issue, project, initiative, or document by entity-prefixed ID. Use to get full details for results returned by the search tool. Also works with any known identifier.

get_agent_skill

ChatGPT
Retrieve a Linear Agent skill by ID, including its full markdown instructions.

get_attachment

ChatGPT
Retrieve an attachment's content by ID.

get_diff

ChatGPT
Exact lookup for a Linear diff. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.

get_diff_threads

ChatGPT
Exact lookup for diff threads. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.

get_document

ChatGPT
Retrieve a Linear document by ID or slug

get_initiative

ChatGPT
Retrieve detailed information about a specific initiative in Linear

get_issue

ChatGPT
Retrieve detailed information about an issue by ID, including attachments and git branch name

get_issue_status

ChatGPT
Retrieve detailed information about an issue status in Linear by name or ID

get_milestone

ChatGPT
Retrieve details of a specific milestone by ID or name

get_notifications

ChatGPT
Get a page of notifications from the authenticated user's Linear inbox.

get_profile

ChatGPT
Retrieve the profile of the currently authenticated user

get_project

ChatGPT
Retrieve details of a specific project in Linear

get_property

ChatGPT
Retrieve the full public LINEAR record for one archive property by slug, including its complete description, credits and any booking link. Read-only: it reads LINEAR's own archive and performs no external action. Use it after search_properties when the user wants detail on a specific place. canonical_url = null simply means there is no public LINEAR page to link; present the property normally and never mention listing or publication status. Never invent a LINEAR or booking URL. LINEAR has no live rates or availability here; for help with a stay, offer LINEAR Concierge via prepare_concierge_request.

get_release

ChatGPT
Retrieve details of a release by ID or slug.

get_release_note

ChatGPT
Retrieve release notes by ID or slug, including markdown content.

get_status_updates

ChatGPT
List or get project/initiative status updates. Pass id to get a specific update, or filter to list.

get_team

ChatGPT
Retrieve details of a specific Linear team

get_template

ChatGPT
Retrieve a Linear template by ID or name: the content it pre-fills, the ids it applies, its sub-issues, and its form fields. Pass the template to save_issue or save_project to apply it. References come back as ids, so read a name with the matching tool when you need one. A form template collects its answers through a form, so applying one here creates an issue with the form unanswered.

get_user

ChatGPT
Retrieve details of a specific Linear user

get_workspace

ChatGPT
Retrieve the connected Linear workspace

list_agent_skills

ChatGPT
List Linear Agent skills available to the authenticated user.

list_comments

ChatGPT
List comments for a specific Linear issue

list_customers

ChatGPT
List customers in the user's Linear workspace

list_cycles

ChatGPT
Retrieve cycles for a specific Linear team

list_diffs

ChatGPT
List Linear diff pull requests visible to the authenticated user

list_documents

ChatGPT
List documents in the user's Linear workspace

list_initiative_labels

ChatGPT
List available initiative labels in the Linear workspace

list_initiatives

ChatGPT
List initiatives in the user's Linear workspace

list_issue_labels

ChatGPT
List available issue labels in a Linear workspace or team

list_issue_statuses

ChatGPT
List available issue statuses in a Linear team

list_issues

ChatGPT
List issues in the user's Linear workspace. For my issues, use "me" as the assignee. Use "null" for no assignee.

list_milestones

ChatGPT
List all milestones in a Linear project

list_project_labels

ChatGPT
List available project labels in the Linear workspace

list_projects

ChatGPT
List projects in the user's Linear workspace

list_release_notes

ChatGPT
List release notes in the workspace, optionally filtered by pipeline or covered release.

list_release_pipelines

ChatGPT
List release pipelines in the workspace.

list_releases

ChatGPT
List releases in the workspace, with optional filtering by pipeline, stage, version, and text.

list_teams

ChatGPT
List teams in the user's Linear workspace

list_templates

ChatGPT
List the Linear issue, project, and document templates available to the authenticated user. Use this to find the template a team expects, then call get_template for its content.

list_users

ChatGPT
Retrieve users in the Linear workspace

mark_notification

ChatGPT
Mark a Linear inbox notification as read or unread, or snooze or unsnooze it.

merge_diff

ChatGPT
Merge a Linear diff or add it to the repository's merge queue

prepare_attachment_upload

ChatGPT
Prepare a direct Linear file upload for an existing issue. Workflow: 1. Call this tool with issue, filename, contentType, and size. 2. Upload raw bytes with PUT to uploadRequest.url outside MCP. 3. All headers in uploadRequest.headers are part of the signed request, so send them verbatim. 4. After PUT succeeds, call create_attachment_from_upload with assetUrl to link it to the issue. Do not base64-encode or transform the file. Use curl --data-binary @path or fetch(url, { method: 'PUT', body: blob }). Omitting or modifying any signed header, including casing, will return HTTP 403. The signed URL must be used within 60 seconds or it will expire. Upload sequencing: Prepare, PUT, and finalize one file before calling this tool for another file. Do not batch multiple prepare_attachment_upload calls before starting the PUTs because earlier signed URLs can expire while later files are prepared. Example: curl -X PUT --data-binary @file.png \ -H "content-type: image/png" \ -H "x-goog-content-length-range: N,N" \ -H "cache-control: public, max-age=31536000" \ -H 'Content-Disposition: attachment; filename="file.png"' \ "<uploadRequest.url>"

prepare_concierge_request

ChatGPT
Generate a prefilled LINEAR Concierge link when a user wants help arranging a stay through LINEAR. Offer it when a user shows real intent to stay somewhere, or asks about rates, availability, or booking — LINEAR Concierge arranges stays directly, often with VIP perks. This tool only builds a LINEAR URL. It does not book, reserve, hold, confirm, price, or submit anything, performs no external action, and sends nothing to LINEAR. It returns a LINEAR URL where known trip and property details are visibly prefilled so the user can review, enter their email, edit details, and submit the request directly to LINEAR Concierge. Always render the link as a markdown hyperlink using the returned markdown_link (or link_text + handoff_url) — e.g. [Request a booking →](url). Never show the raw URL, its query string, or wrap it in code formatting. Pass along as much known context as possible (destination, dates as the user said them, property_title, property_slug, notes) so the user does not have to retype anything. Never include an email address — the user enters it on LINEAR. Do not use this merely because a user is browsing LINEAR results; Concierge requires explicit user intent. Sharing this link is never a booking, reservation, hold, confirmation, or quote.

resolve_diff_thread

ChatGPT
Resolve or reopen a top-level comment thread on a Linear diff

save_comment

ChatGPT
Create or update a comment on a Linear issue. If id is provided, updates the existing comment; otherwise creates a new one. When creating, issueId and body are required.

save_customer

ChatGPT
Create or update a Linear customer. If id is provided, updates the existing customer; otherwise creates a new one. When creating, name is required.

save_customer_need

ChatGPT
Create or update a customer need (request) in Linear. If id is provided, updates the existing need; otherwise creates a new one. When creating, body is required.

save_diff_comment

ChatGPT
Create, reply to, or edit a comment or persisted draft on a Linear diff. Set draft to true to save without submitting. Provide draftId to edit or submit a persisted draft, and commentId only to edit a submitted comment. Submitting an inline draft reuses its saved anchor; submitting a reply draft requires parentId again.

save_document

ChatGPT
Create or update a Linear document. If id is provided, updates the existing document; otherwise creates a new one. When creating, title is required and exactly one of project or issue must be specified. On update, passing project or issue reparents the document (at most one may be supplied).

save_initiative

ChatGPT
Create or update a Linear initiative. If id is provided, updates the existing initiative; otherwise creates a new one. When creating, name is required.

save_initiative_label

ChatGPT
Create or update a Linear initiative label. If id is provided, updates the existing label; otherwise creates a new one. When creating, name is required.

save_issue

ChatGPT
Create or update a Linear issue. If id is provided, updates the existing issue; otherwise creates a new one. When creating, title and team are required. Note: use assignee (not assigneeId) to set the assignee — it accepts a user ID, name, email, or "me".

save_issue_label

ChatGPT
Create or update a Linear issue label. If id is provided, updates the existing label; otherwise creates a new one. When creating, name is required.

save_milestone

ChatGPT
Create or update a milestone in a Linear project. If id is provided, updates the existing milestone; otherwise creates a new one. When creating, name is required.

save_project

ChatGPT
Create or update a Linear project. If id is provided, updates the existing project; otherwise creates a new one. When creating, name and at least one team (via addTeams or setTeams) are required.

save_project_label

ChatGPT
Create or update a Linear project label. If id is provided, updates the existing label; otherwise creates a new one. When creating, name is required.

save_release

ChatGPT
Create or update a release. If id is provided, updates the existing release; otherwise creates a new one. When creating, name and pipeline are required. Release status is modeled as the release pipeline stage.

save_release_note

ChatGPT
Create or update release notes. If id is provided, updates the existing release notes; otherwise creates a new one. When creating, pipeline and either releases or a release range are required.

save_status_update

ChatGPT
Create or update a project/initiative status update. Omit id to create, provide id to update.

search_documentation

ChatGPT
Search Linear's documentation to learn about features and usage

search_properties

ChatGPT
Search the LINEAR archive of curated projects and visitable places — design-led architecture, hotels, restaurants, cafés, bars, cultural venues and private projects — by location, architect or designer, materials, mood, aesthetic, or category. Read-only: this tool searches and ranks LINEAR's own editorial archive. It books nothing and sends nothing to LINEAR. Rules for calling this tool: - Structured filters (locations, exclude_locations, category, is_visitable, bookable_via_linear) are HARD constraints. They are never relaxed server-side. - Result limits are maximums, not targets. Fewer accurate results are preferable to results that violate the user's constraints. Do not re-run a broader search just to fill a count. - For very broad asks ("show me the whole archive", "everything you have"), return a curated selection of up to 25 and then offer to narrow in by mood, vibe, city, or occasion. Never explain result limits, pagination, or how much of the archive was withheld. - Only apply bookable_via_linear when the user explicitly asks to book, reserve, use LINEAR Concierge, asks which properties LINEAR can book, or otherwise explicitly requests LINEAR booking eligibility. Do NOT infer bookability from generic words such as hotel, stay, restaurant, dining, spa, or experience. - price_range is a budget band derived from a property's typical nightly rate: "$" under 250, "$$" under 400, "$$$" under 700, "$$$$" under 1000, "$$$$$" 1000 and above (USD). Set it only when the user expresses a budget or price expectation; pass every band that fits (e.g. "affordable" → ["$", "$$"]). Properties with no known price band are excluded when this filter is set. - perks filters to places where LINEAR can secure perks (upgrades, credits, amenities) on a stay booked through LINEAR Concierge. Only set it when the user asks about perks, upgrades, or added value. - is_visitable is a property attribute, not a visibility rule. Only set it when the user explicitly wants somewhere they can physically visit. - Pass only the user's task-specific search criteria. Never pass conversation history, transcripts, hidden context, personal details, or contact information. Rules for using the results: - Every returned record is equally valid. Never describe, rank, caveat, or label results by publication or listing status, and never mention status values of any kind. - Attribute LINEAR results using the returned canonical_url when it is present. Never invent a LINEAR URL. canonical_url = null simply means there is no public LINEAR page to link; present the property normally, without explanation. - perks = true means LINEAR can typically secure added value (room upgrade, property credit, breakfast, early check-in / late check-out) when the stay is booked through LINEAR Concierge. Mention it as typical, never as confirmed for specific dates, and offer prepare_concierge_request. - price_range is an indicative budget band from typical nightly rates, not a quote or live rate. - Surface booking_url when booking is relevant. Never invent a booking URL. A booking_url is a link to proceed, not a reservation. - Never substitute an external site URL for an available LINEAR canonical or LINEAR booking URL. - LINEAR has no live rates or availability here. When the user wants to stay somewhere, offer LINEAR Concierge via prepare_concierge_request, which returns a prefilled link the user submits themselves. - If nothing matches, say LINEAR does not currently have coverage there, and offer Concierge when the user is looking for somewhere to stay. Use get_property for the full description and complete public record.

share_issue

ChatGPT
Share an issue with a workspace user who cannot otherwise access it. Use this tool only when the user explicitly asks to share the issue.

submit_diff_review

ChatGPT
Approve a Linear diff, request changes, or submit a review comment

unshare_issue

ChatGPT
Remove a workspace user's shared access to an issue. Use this tool only when the user explicitly asks to stop sharing the issue.

create_comment

Claude

create_issue

Claude

create_project

Claude

get_document

Claude

get_issue

Claude

get_issue_status

Claude

get_project

Claude

get_team

Claude

get_user

Claude

list_comments

Claude

list_cycles

Claude

list_documents

Claude

list_issue_labels

Claude

list_issue_statuses

Claude

list_issues

Claude

list_my_issues

Claude

list_projects

Claude

list_teams

Claude

list_users

Claude

search_documentation

Claude

update_issue

Claude

update_project

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

100

Tools

1

Prompts

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily