create_attachment
ChatGPTCreate a new attachment on a specific Linear issue by uploading base64-encoded content.
create_attachment_from_upload
ChatGPTLink 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
ChatGPTCreate a new Linear initiative label
create_issue_label
ChatGPTCreate a new Linear issue label
delete_attachment
ChatGPTDelete an attachment by ID
delete_customer
ChatGPTDelete a customer in Linear
delete_customer_need
ChatGPTArchive a customer need in Linear
delete_status_update
ChatGPTDelete (archive) a project or initiative status update.
fetch
ChatGPTFetch 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
ChatGPTRetrieve a Linear Agent skill by ID, including its full markdown instructions.
get_attachment
ChatGPTRetrieve an attachment's content by ID.
get_diff
ChatGPTExact lookup for a Linear diff. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.
get_diff_threads
ChatGPTExact lookup for diff threads. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.
get_document
ChatGPTRetrieve a Linear document by ID or slug
get_initiative
ChatGPTRetrieve detailed information about a specific initiative in Linear
get_issue
ChatGPTRetrieve detailed information about an issue by ID, including attachments and git branch name
get_issue_status
ChatGPTRetrieve detailed information about an issue status in Linear by name or ID
get_milestone
ChatGPTRetrieve details of a specific milestone by ID or name
get_notifications
ChatGPTGet a page of notifications from the authenticated user's Linear inbox.
get_profile
ChatGPTRetrieve the profile of the currently authenticated user
get_project
ChatGPTRetrieve details of a specific project in Linear
get_property
ChatGPTRetrieve 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
ChatGPTRetrieve details of a release by ID or slug.
get_release_note
ChatGPTRetrieve release notes by ID or slug, including markdown content.
get_status_updates
ChatGPTList or get project/initiative status updates. Pass id to get a specific update, or filter to list.
get_team
ChatGPTRetrieve details of a specific Linear team
get_template
ChatGPTRetrieve 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
ChatGPTRetrieve details of a specific Linear user
get_workspace
ChatGPTRetrieve the connected Linear workspace
list_agent_skills
ChatGPTList Linear Agent skills available to the authenticated user.
list_customers
ChatGPTList customers in the user's Linear workspace
list_cycles
ChatGPTRetrieve cycles for a specific Linear team
list_diffs
ChatGPTList Linear diff pull requests visible to the authenticated user
list_documents
ChatGPTList documents in the user's Linear workspace
list_initiative_labels
ChatGPTList available initiative labels in the Linear workspace
list_initiatives
ChatGPTList initiatives in the user's Linear workspace
list_issue_labels
ChatGPTList available issue labels in a Linear workspace or team
list_issue_statuses
ChatGPTList available issue statuses in a Linear team
list_issues
ChatGPTList issues in the user's Linear workspace. For my issues, use "me" as the assignee. Use "null" for no assignee.
list_milestones
ChatGPTList all milestones in a Linear project
list_project_labels
ChatGPTList available project labels in the Linear workspace
list_projects
ChatGPTList projects in the user's Linear workspace
list_release_notes
ChatGPTList release notes in the workspace, optionally filtered by pipeline or covered release.
list_release_pipelines
ChatGPTList release pipelines in the workspace.
list_releases
ChatGPTList releases in the workspace, with optional filtering by pipeline, stage, version, and text.
list_teams
ChatGPTList teams in the user's Linear workspace
list_templates
ChatGPTList 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
ChatGPTRetrieve users in the Linear workspace
mark_notification
ChatGPTMark a Linear inbox notification as read or unread, or snooze or unsnooze it.
merge_diff
ChatGPTMerge a Linear diff or add it to the repository's merge queue
prepare_attachment_upload
ChatGPTPrepare 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
ChatGPTGenerate 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
ChatGPTResolve or reopen a top-level comment thread on a Linear diff
save_customer
ChatGPTCreate 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
ChatGPTCreate 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_document
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate or update a project/initiative status update. Omit id to create, provide id to update.
search
ChatGPTFull-text search across Linear issues, projects, initiatives, and documents, ranked by relevance. Use this for keyword or natural-language queries (e.g. "memory leak in sync engine"). Supports "quoted phrases" for exact match, -term to exclude, and +term to require. For structured filtering by assignee, status, team, label, etc., use the list_issues or list_projects tools instead.
search_documentation
ChatGPTSearch Linear's documentation to learn about features and usage
search_properties
ChatGPTSearch 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
ChatGPTShare 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
ChatGPTApprove a Linear diff, request changes, or submit a review comment
unshare_issue
ChatGPTRemove a workspace user's shared access to an issue. Use this tool only when the user explicitly asks to stop sharing the issue.
create_issue
Claudecreate_project
Claudeget_document
Claudeget_issue
Claudeget_issue_status
Claudeget_project
Claudeget_team
Claudeget_user
Claudelist_cycles
Claudelist_documents
Claudelist_issue_labels
Claudelist_issue_statuses
Claudelist_issues
Claudelist_my_issues
Claudelist_projects
Claudelist_teams
Claudelist_users
Claudesearch_documentation
Claudeupdate_issue
Claudeupdate_project
Claude