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---2name: linear3description: Use when Linear issues or projects must be read or changed through MCPorter.4license: AGPL-3.0-or-later5---67# Linear89Linear work MUST use literal MCPorter server `linear`.1011- Live schema MUST remain authoritative when inspected12- The catalog is a dated fallback snapshot1314## Required follow-up reads1516| Need | Read | When |17| --- | --- | --- |18| Tool signature or safety notes | Relevant section of `references/tool-catalog.md` | Needed details are absent from common recipes; NEVER load the whole catalog |19| Live discovery failure | `references/tool-catalog.md` | Current live schema cannot be retrieved |2021## Tool routes2223This stable name index is the default discovery layer. Read only the matching catalog section when its signature or safety notes are needed.2425| Domain | Tools |26| --- | --- |27| Attachments | `get_attachment`, `prepare_attachment_upload`, `create_attachment_from_upload`, `create_attachment`, `delete_attachment` |28| Agent skills | `list_agent_skills`, `get_agent_skill` |29| Comments | `list_comments`, `save_comment`, `delete_comment` |30| Cycles | `list_cycles` |31| Documents | `get_document`, `list_documents`, `save_document`, `extract_images` |32| Issues | `get_issue`, `list_issues`, `save_issue`, `list_issue_statuses`, `get_issue_status`, `list_issue_labels`, `create_issue_label` |33| Projects | `list_projects`, `get_project`, `save_project`, `list_project_labels` |34| Releases | `list_release_pipelines`, `list_releases`, `get_release`, `save_release`, `list_release_notes`, `get_release_note`, `save_release_note` |35| Diffs | `get_diff`, `list_diffs`, `get_diff_threads` |36| Milestones | `list_milestones`, `get_milestone`, `save_milestone` |37| Teams and users | `list_teams`, `get_team`, `list_users`, `get_user` |38| Documentation | `search_documentation` |39| Status updates | `get_status_updates`, `save_status_update`, `delete_status_update` |4041## Common reads4243These complete recipes use known inputs and SHOULD be called directly:4445```text46mcporter call linear.list_issues assignee=me orderBy=updatedAt limit=5 --output json47mcporter call linear.get_issue id=ENG-42 --output json48mcporter call linear.list_projects query='<name>' limit=50 --output json49mcporter call linear.list_comments issueId=ENG-42 limit=50 --output json50mcporter call linear.list_teams query='<name>' limit=50 --output json51mcporter call linear.list_users query='<name-or-email>' limit=50 --output json52```5354`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`.5556`--output json` selects rendering, not a response contract. Inspect returned issue records defensively for requested fields; input-schema discovery cannot validate output fields.5758## Recovery5960- Missing generated registry: MUST report the setup failure.61- NEVER add or substitute a registry.62- NEVER expose, copy, or log tokens6364```text65mcporter list linear --status --no-oauth --exit-code66mcporter list linear --brief67mcporter list linear.<tool> --schema68```6970- Select the tool from the route index; search only its catalog section for an unknown signature71- If the needed capability is absent from the index, use brief live inventory72- Inputs absent from a common recipe or catalog signature: inspect targeted live schema73- Rejected inputs or tool-not-found errors: inspect targeted live schema, then retry once74- Every mutation: MUST inspect targeted live schema75- Live discovery failure: MAY use the relevant catalog entry and MUST disclose possible drift76- NEVER invent tools, arguments, or response fields7778- Run status only after a connection or authentication failure79- Auth failure: MUST run `mcporter auth linear`, then recheck status80- Persistent 401/403: MUST report missing access. NEVER write8182## Calls8384```text85mcporter call linear.<tool> key=value --output json86mcporter call 'linear.<tool>(arg: "value")' --output json87mcporter call linear.<tool> --args '{"id":"ENG-42","labels":["Bug"]}' --output json88mcporter call linear.<tool> body=@comment.md --output json89```9091- Simple scalars SHOULD use `key=value`92- Typed literals SHOULD use function syntax93- Structured or multiline values SHOULD use `--args`94- UTF-8 files SHOULD use `key=@path`; `@@` means literal `@`95- MUST quote shell-sensitive values96- Image responses SHOULD use `--save-images <directory>`9798## Safety99100- Before writes: MUST resolve target and inspect write schema101- MUST apply the smallest change, then re-read102- `save_issue`: omitted `id` creates; supplied `id` updates103- Creation MUST include `title` and `team`104- `labels` replaces all labels; omission preserves them105- Nullable fields clear only with explicit `null`106- NEVER combine mutually exclusive release fields107- New comments MUST include `body` and exactly one parent108- Replies MUST use `parentId`109- Uncertain timeout: MUST read/search before retrying110- Bulk/destructive writes MUST have intent, confirmation, targeted schema111- Validation errors: MUST correct payload against live schema112- NEVER drop rejected fields silently113- Paginated reads MUST use filters/cursors and disclose boundaries