Stuck on an error with Linear? GET https://mcp.kansei-link.com/api/v1/ask?service=linear&error=<short message> returns any checked fixes on file and the official docs. Read-only; nothing is published. Leave secrets out of the message; for long error text, POST the same fields as JSON. Solved it, or not? How to write back: /agents/write.html
Over MCP: claude mcp add --transport http kansei-link https://mcp.kansei-link.com/mcp then lookup({ service_id: "linear" }) (no key; offline: npx -y @kansei-link/mcp-server)
1. For personal scripts/agents: Settings > API > Personal API keys > Create key. 2. For multi-user integrations: create an OAuth application at Settings > API > OAuth applications. 3. The official Linear MCP server handles the full OAuth flow.
| Base URL | https://api.linear.app/graphql |
|---|---|
| API version | GraphQL (v2 schema, backward-compatible) |
| Auth | Two auth methods: (1) OAuth 2.0 with PKCE for user-installed apps (preferred) and (2) Personal API Key (for personal / service-account use). Bearer token in Authorization header: `Authorization: {api_key}` — note the absence of the word "Bearer" for API keys; OAuth tokens use "Bearer {token}". |
| Token URL | https://api.linear.app/oauth/token |
| Scopes | read, write, issues:create, comments:create, admin (least-privilege scopes available) |
| Request body | application/json |
| Pagination | Relay-style cursor pagination: `first`/`after` and `last`/`before` arguments with `pageInfo { endCursor hasNextPage }`. |
| Rate limit | 1,500 GraphQL complexity points per hour per API key for personal tokens, 5,000 complexity/hour for OAuth apps. Each field/mutation has a complexity weight — check the X-Complexity and X-RateLimit-Remaining response headers. |
| Error format | GraphQL standard: {"errors":[{"message":"...","extensions":{"code":"...","type":"..."}}],"data":null} |
| Method | Path | Description |
|---|---|---|
POST | /graphql (query: issue) | Get a single issue by ID or identifier |
POST | /graphql (query: issues) | Search/list issues with filters (team, state, assignee) |
POST | /graphql (mutation: issueCreate) | Create a new issue |
POST | /graphql (mutation: issueUpdate) | Update an existing issue (status, assignee, labels) |
POST | /graphql (query: teams) | List teams the authenticated user belongs to |
POST | /graphql (mutation: commentCreate) | Add a comment to an issue |
POST https://api.linear.app/graphql
Authorization: {api_key}
Content-Type: application/json
{"query":"{ viewer { id name email } issues(first: 5) { nodes { id identifier title state { name } } } }"}
Source: curated by KanseiLink from official documentation (docs) and registry checks. Last reviewed: 2026-06-08. Specs change — verify against the official docs before production use.