Linear
Linear work MUST use literal MCPorter server linear.
- Live schema MUST remain authoritative when inspected
- The catalog is a dated fallback snapshot
Required follow-up reads
| Need |
Read |
When |
| Tool signature or safety notes |
Relevant section of references/tool-catalog.md |
Needed details are absent from common recipes; NEVER load the whole catalog |
| Live discovery failure |
references/tool-catalog.md |
Current live schema cannot be retrieved |
Tool routes
This stable name index is the default discovery layer. Read only the matching catalog section when its signature or safety notes are needed.
| Domain |
Tools |
| Attachments |
get_attachment, prepare_attachment_upload, create_attachment_from_upload, create_attachment, delete_attachment |
| Agent skills |
list_agent_skills, get_agent_skill |
| Comments |
list_comments, save_comment, delete_comment |
| Cycles |
list_cycles |
| Documents |
get_document, list_documents, save_document, extract_images |
| Issues |
get_issue, list_issues, save_issue, list_issue_statuses, get_issue_status, list_issue_labels, create_issue_label |
| Projects |
list_projects, get_project, save_project, list_project_labels |
| Releases |
list_release_pipelines, list_releases, get_release, save_release, list_release_notes, get_release_note, save_release_note |
| Diffs |
get_diff, list_diffs, get_diff_threads |
| Milestones |
list_milestones, get_milestone, save_milestone |
| Teams and users |
list_teams, get_team, list_users, get_user |
| Documentation |
search_documentation |
| Status updates |
get_status_updates, save_status_update, delete_status_update |
Common reads
These complete recipes use known inputs and SHOULD be called directly:
mcporter call linear.list_issues assignee=me orderBy=updatedAt limit=5 --output json
mcporter call linear.get_issue id=ENG-42 --output json
mcporter call linear.list_projects query='<name>' limit=50 --output json
mcporter call linear.list_comments issueId=ENG-42 limit=50 --output json
mcporter call linear.list_teams query='<name>' limit=50 --output json
mcporter call linear.list_users query='<name-or-email>' limit=50 --output json
list_issues common inputs: limit?:number=50, orderBy?:createdAt|updatedAt=updatedAt, assignee?:string|null; assignee=me selects the current user. Priority values are 0=None, 1=Urgent, 2=High, 3=Medium, 4=Low.
--output json selects rendering, not a response contract. Inspect returned issue records defensively for requested fields; input-schema discovery cannot validate output fields.
Recovery
- Missing generated registry: MUST report the setup failure.
- NEVER add or substitute a registry.
- NEVER expose, copy, or log tokens
mcporter list linear --status --no-oauth --exit-code
mcporter list linear --brief
mcporter list linear.<tool> --schema
Select the tool from the route index; search only its catalog section for an unknown signature
If the needed capability is absent from the index, use brief live inventory
Inputs absent from a common recipe or catalog signature: inspect targeted live schema
Rejected inputs or tool-not-found errors: inspect targeted live schema, then retry once
Every mutation: MUST inspect targeted live schema
Live discovery failure: MAY use the relevant catalog entry and MUST disclose possible drift
NEVER invent tools, arguments, or response fields
Run status only after a connection or authentication failure
Auth failure: MUST run mcporter auth linear, then recheck status
Persistent 401/403: MUST report missing access. NEVER write
Calls
mcporter call linear.<tool> key=value --output json
mcporter call 'linear.<tool>(arg: "value")' --output json
mcporter call linear.<tool> --args '{"id":"ENG-42","labels":["Bug"]}' --output json
mcporter call linear.<tool> body=@comment.md --output json
- Simple scalars SHOULD use
key=value
- Typed literals SHOULD use function syntax
- Structured or multiline values SHOULD use
--args
- UTF-8 files SHOULD use
key=@path; @@ means literal @
- MUST quote shell-sensitive values
- Image responses SHOULD use
--save-images <directory>
Safety
- Before writes: MUST resolve target and inspect write schema
- MUST apply the smallest change, then re-read
save_issue: omitted id creates; supplied id updates
- Creation MUST include
title and team
labels replaces all labels; omission preserves them
- Nullable fields clear only with explicit
null
- NEVER combine mutually exclusive release fields
- New comments MUST include
body and exactly one parent
- Replies MUST use
parentId
- Uncertain timeout: MUST read/search before retrying
- Bulk/destructive writes MUST have intent, confirmation, targeted schema
- Validation errors: MUST correct payload against live schema
- NEVER drop rejected fields silently
- Paginated reads MUST use filters/cursors and disclose boundaries
1---2disable-model-invocation: true3name: linear4description: "Use when Linear issues or projects must be read or changed through MCPorter."5license: AGPL-3.0-or-later6compatibility: Requires MCPorter configuration and Linear authentication.7---89# Linear1011Linear work MUST use literal MCPorter server `linear`.1213- Live schema MUST remain authoritative when inspected14- The catalog is a dated fallback snapshot1516## Required follow-up reads1718| Need | Read | When |19| --- | --- | --- |20| Tool signature or safety notes | Relevant section of `references/tool-catalog.md` | Needed details are absent from common recipes; NEVER load the whole catalog |21| Live discovery failure | `references/tool-catalog.md` | Current live schema cannot be retrieved |2223## Tool routes2425This stable name index is the default discovery layer. Read only the matching catalog section when its signature or safety notes are needed.2627| Domain | Tools |28| --- | --- |29| Attachments | `get_attachment`, `prepare_attachment_upload`, `create_attachment_from_upload`, `create_attachment`, `delete_attachment` |30| Agent skills | `list_agent_skills`, `get_agent_skill` |31| Comments | `list_comments`, `save_comment`, `delete_comment` |32| Cycles | `list_cycles` |33| Documents | `get_document`, `list_documents`, `save_document`, `extract_images` |34| Issues | `get_issue`, `list_issues`, `save_issue`, `list_issue_statuses`, `get_issue_status`, `list_issue_labels`, `create_issue_label` |35| Projects | `list_projects`, `get_project`, `save_project`, `list_project_labels` |36| Releases | `list_release_pipelines`, `list_releases`, `get_release`, `save_release`, `list_release_notes`, `get_release_note`, `save_release_note` |37| Diffs | `get_diff`, `list_diffs`, `get_diff_threads` |38| Milestones | `list_milestones`, `get_milestone`, `save_milestone` |39| Teams and users | `list_teams`, `get_team`, `list_users`, `get_user` |40| Documentation | `search_documentation` |41| Status updates | `get_status_updates`, `save_status_update`, `delete_status_update` |4243## Common reads4445These complete recipes use known inputs and SHOULD be called directly:4647```text48mcporter call linear.list_issues assignee=me orderBy=updatedAt limit=5 --output json49mcporter call linear.get_issue id=ENG-42 --output json50mcporter call linear.list_projects query='<name>' limit=50 --output json51mcporter call linear.list_comments issueId=ENG-42 limit=50 --output json52mcporter call linear.list_teams query='<name>' limit=50 --output json53mcporter call linear.list_users query='<name-or-email>' limit=50 --output json54```5556`list_issues` common inputs: `limit?:number=50`, `orderBy?:createdAt|updatedAt=updatedAt`, `assignee?:string|null`; `assignee=me` selects the current user. Priority values are `0=None`, `1=Urgent`, `2=High`, `3=Medium`, `4=Low`.5758`--output json` selects rendering, not a response contract. Inspect returned issue records defensively for requested fields; input-schema discovery cannot validate output fields.5960## Recovery6162- Missing generated registry: MUST report the setup failure.63- NEVER add or substitute a registry.64- NEVER expose, copy, or log tokens6566```text67mcporter list linear --status --no-oauth --exit-code68mcporter list linear --brief69mcporter list linear.<tool> --schema70```7172- Select the tool from the route index; search only its catalog section for an unknown signature73- If the needed capability is absent from the index, use brief live inventory74- Inputs absent from a common recipe or catalog signature: inspect targeted live schema75- Rejected inputs or tool-not-found errors: inspect targeted live schema, then retry once76- Every mutation: MUST inspect targeted live schema77- Live discovery failure: MAY use the relevant catalog entry and MUST disclose possible drift78- NEVER invent tools, arguments, or response fields7980- Run status only after a connection or authentication failure81- Auth failure: MUST run `mcporter auth linear`, then recheck status82- Persistent 401/403: MUST report missing access. NEVER write8384## Calls8586```text87mcporter call linear.<tool> key=value --output json88mcporter call 'linear.<tool>(arg: "value")' --output json89mcporter call linear.<tool> --args '{"id":"ENG-42","labels":["Bug"]}' --output json90mcporter call linear.<tool> body=@comment.md --output json91```9293- Simple scalars SHOULD use `key=value`94- Typed literals SHOULD use function syntax95- Structured or multiline values SHOULD use `--args`96- UTF-8 files SHOULD use `key=@path`; `@@` means literal `@`97- MUST quote shell-sensitive values98- Image responses SHOULD use `--save-images <directory>`99100## Safety101102- Before writes: MUST resolve target and inspect write schema103- MUST apply the smallest change, then re-read104- `save_issue`: omitted `id` creates; supplied `id` updates105- Creation MUST include `title` and `team`106- `labels` replaces all labels; omission preserves them107- Nullable fields clear only with explicit `null`108- NEVER combine mutually exclusive release fields109- New comments MUST include `body` and exactly one parent110- Replies MUST use `parentId`111- Uncertain timeout: MUST read/search before retrying112- Bulk/destructive writes MUST have intent, confirmation, targeted schema113- Validation errors: MUST correct payload against live schema114- NEVER drop rejected fields silently115- Paginated reads MUST use filters/cursors and disclose boundaries