{
  "info": {
    "name": "Linear — mcp.ai",
    "description": "REST API for the Linear MCP. Set {{apiKey}} to a workspace key (sk_live_…) created at https://mcp.ai/settings/api-keys.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.mcp.ai/api/linear",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "sk_live_...",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "linear_create_linear_attachment",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/linear/attachment",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "linear",
            "attachment"
          ]
        },
        "description": "Creates a new attachment and associates it with a specific, existing linear issue.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"url\": \"\",\n  \"title\": \"\",\n  \"issue_id\": \"\",\n  \"subtitle\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_create_linear_comment",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/linear/comment",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "linear",
            "comment"
          ]
        },
        "description": "Creates a new comment on a specified linear issue.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"body\": \"\",\n  \"issue_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_create_linear_issue",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/linear/issue",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "linear",
            "issue"
          ]
        },
        "description": "Creates a new issue in a specified linear project and team, requiring a title and description, and allowing for optional properties like assignee, state, priority, cycle, and due date.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"title\": \"\",\n  \"team_id\": \"\",\n  \"cycle_id\": \"\",\n  \"due_date\": \"\",\n  \"estimate\": 0,\n  \"priority\": 0,\n  \"state_id\": \"\",\n  \"label_ids\": \"\",\n  \"parent_id\": \"\",\n  \"project_id\": \"\",\n  \"assignee_id\": \"\",\n  \"description\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_create_linear_issue_details",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/linear/issue/details",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "linear",
            "issue",
            "details"
          ]
        },
        "description": "Fetches a linear team's default issue estimate and state, useful for pre-filling new issue forms.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"team_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_create_linear_label",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/linear/label",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "linear",
            "label"
          ]
        },
        "description": "Creates a new label in linear for a specified team, used to categorize and organize issues.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"color\": \"\",\n  \"team_id\": \"\",\n  \"description\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_delete_linear_issue",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/linear/issue",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "linear",
            "issue"
          ]
        },
        "description": "Archives an existing linear issue by its id, which is linear's standard way of deleting issues; the operation is idempotent.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"issue_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_get_all_linear_teams",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/all/linear/teams",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "all",
            "linear",
            "teams"
          ]
        },
        "description": "Retrieves all teams from the linear workspace without requiring any parameters.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_get_attachments",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/attachments",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "attachments"
          ]
        },
        "description": "Downloads a specific attachment from a linear issue; the `file name` must include the correct file extension.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"issue_id\": \"\",\n  \"file_name\": \"\",\n  \"attachment_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_get_current_user",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/current/user",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "current",
            "user"
          ]
        },
        "description": "Gets the currently authenticated user's id, name, email, and other profile information. use this to identify 'me' in other linear operations that require user id filtering.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_get_cycles_by_team_id",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/cycles/by/team/id",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "cycles",
            "by",
            "team",
            "id"
          ]
        },
        "description": "Retrieves all cycles for a specified linear team id; cycles are time-boxed work periods (like sprints) and the team id must correspond to an existing team.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"team_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_get_linear_issue",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/linear/issue",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "linear",
            "issue"
          ]
        },
        "description": "Retrieves an existing linear issue's comprehensive details, including title, description, attachments, and comments.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"issue_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_list_linear_cycles",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/linear/cycles",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "linear",
            "cycles"
          ]
        },
        "description": "Retrieves all cycles (time-boxed iterations for work) from the linear account; no filters are applied.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_list_linear_issues",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/linear/issues",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "linear",
            "issues"
          ]
        },
        "description": "Lists non-archived linear issues; if project id is not specified, issues from all accessible projects are returned. can also filter by assignee id to get issues assigned to a specific user.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"after\": \"\",\n  \"first\": 0,\n  \"project_id\": \"\",\n  \"assignee_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_list_linear_labels",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/linear/labels",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "linear",
            "labels"
          ]
        },
        "description": "Retrieves all labels associated with a given team id in linear; the team id must refer to an existing team.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"team_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_list_linear_projects",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/linear/projects",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "linear",
            "projects"
          ]
        },
        "description": "Retrieves all projects from the linear account.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_list_linear_states",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/linear/states",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "linear",
            "states"
          ]
        },
        "description": "Retrieves all workflow states for a specified team in linear, representing the stages an issue progresses through in that team's workflow.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"team_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_list_linear_teams",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/linear/teams",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "linear",
            "teams"
          ]
        },
        "description": "Retrieves all teams, including their members, and filters each team's associated projects by the provided 'project id'.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"project_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_list_linear_users",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/linear/users",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "linear",
            "users"
          ]
        },
        "description": "Lists all users in the linear workspace with their ids, names, emails, and active status.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"after\": \"\",\n  \"first\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_remove_issue_label",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/remove/issue/label",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "remove",
            "issue",
            "label"
          ]
        },
        "description": "Removes a specified label from an existing linear issue using their ids; successful even if the label isn't on the issue.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"issue_id\": \"\",\n  \"label_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_run_query_or_mutation",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/run/query/or/mutation",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "run",
            "query",
            "or",
            "mutation"
          ]
        },
        "description": "Wildcard action that executes any graphql query or mutation against the linear api. use this as a fallback when no specific action exists for your use case, or when you need to perform complex operati",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"variables\": {},\n  \"query_or_mutation\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "linear_update_issue",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/issue",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "issue"
          ]
        },
        "description": "Updates an existing linear issue using its `issue id`; requires at least one other attribute for modification, and all provided entity ids (for state, assignee, labels, etc.) must be valid.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"title\": \"\",\n  \"team_id\": \"\",\n  \"due_date\": \"\",\n  \"estimate\": 0,\n  \"issue_id\": \"\",\n  \"priority\": 0,\n  \"state_id\": \"\",\n  \"label_ids\": \"\",\n  \"parent_id\": \"\",\n  \"project_id\": \"\",\n  \"assignee_id\": \"\",\n  \"description\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    }
  ]
}