---
ref: tool:linear/create-issue
name: Create or update an issue
company: company:linear
workflows: []
access: [mcp, api]
tags: [capability:manage-tasks, category:project-management, has:api, has:mcp]
docs: https://linear.app/developers/graphql
updated: 2026-09-27
---

# Create or update an issue

Creates an issue in a team with its title, description, assignee, labels and priority, or updates an existing issue when you pass its id.

On the API, send the `issueCreate` mutation with a `teamId` and a `title`, or
`issueUpdate` with the issue's id (its UUID or a key like `BLA-123`) and only
the fields to change. An issue created through the API without a `stateId`
lands in the team's first Backlog state, or in Triage when the team uses it;
through the MCP server it takes the team's default state when you are a member
of the team. `save_issue` replaced the separate `create_issue` and
`update_issue` tools.

## Set up

Use the first option your agent supports.

### MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "linear": { "url": "https://mcp.linear.app/mcp" } } }
```

Call the MCP tool `save_issue`.

Server URL: https://mcp.linear.app/mcp

### API (official)

- Base URL: https://api.linear.app
- Endpoint: `POST /graphql`
- Auth: send the header `Authorization: $LINEAR_API_KEY`
- Get a key: https://linear.app/settings/account/security
- Docs: https://linear.app/developers/graphql

Before doing anything else, make one read-only call to confirm access.

## Rules

- Ask the user before anything that sends messages, costs money, or changes data.
- Never print API keys.
