{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-linear","slug":"linear","name":"Linear","type":"mcp","url":"https://github.com/tacticlaunch/mcp-linear","page_url":"https://unfragile.ai/linear","categories":["mcp-servers"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-linear__cap_0","uri":"capability://tool.use.integration.mcp.protocol.translation.to.linear.graphql","name":"mcp protocol translation to linear graphql","description":"Translates Model Context Protocol (MCP) tool calls received over stdio into authenticated GraphQL requests against the Linear API. The MCP Server Layer (src/mcp-server.ts) receives CallTool requests, routes them through a type-guarded tool dispatch system (src/tools/type-guards.ts validates arguments against Zod schemas), and delegates to LinearService which wraps @linear/sdk's LinearClient. This three-layer architecture decouples protocol handling from Linear SDK details, enabling AI clients (Cursor, Claude Desktop, Claude VSCode, GoMCP) to interact with Linear without custom integration code.","intents":["Enable Claude or Cursor to read and write Linear issues, projects, and cycles without building custom API integration","Connect an AI agent to Linear as a tool server that speaks standard MCP protocol","Delegate Linear operations from an LLM to a stateless, authenticated service layer"],"best_for":["AI agent builders integrating Linear into multi-tool workflows","Teams using Claude Desktop or Cursor who want native Linear access","Developers building MCP-compatible clients that need project management capabilities"],"limitations":["Requires Linear Personal API Token with appropriate scopes — no OAuth2 support","All tool calls are synchronous; no built-in batching or transaction support across multiple operations","MCP stdio transport adds latency for each tool invocation — not suitable for high-frequency polling scenarios","No caching layer between MCP requests and Linear GraphQL — each call hits the API"],"requires":["Node.js 18+ (for @modelcontextprotocol/sdk compatibility)","Linear Personal API Token (generated in Linear workspace settings)","MCP-compatible client (Cursor, Claude Desktop, Claude VSCode, or GoMCP)","@modelcontextprotocol/sdk and @linear/sdk npm packages"],"input_types":["MCP CallToolRequest with tool name (e.g., 'linear_create_issue') and JSON arguments","Zod-validated schema objects for each tool"],"output_types":["MCP CallToolResult with JSON response containing Linear entity data","Error responses with descriptive messages if validation or GraphQL execution fails"],"categories":["tool-use-integration","mcp-server"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-linear__cap_1","uri":"capability://tool.use.integration.schema.driven.tool.registration.and.dispatch","name":"schema-driven tool registration and dispatch","description":"Registers 42 Linear tools (organized by domain: Issues, Projects, Initiatives, Cycles, Teams, Users/Org) via Zod schemas defined in src/tools/definitions/. Each tool has a corresponding handler in src/tools/handlers/ that receives validated arguments. The dispatch system uses type guards (src/tools/type-guards.ts) to validate incoming arguments against schemas before routing to handlers. Tool names follow a consistent linear_* prefix convention. This schema-first approach enables runtime validation, auto-documentation, and safe argument passing without manual type coercion.","intents":["Validate tool arguments at runtime before executing Linear API calls","Expose a consistent, discoverable set of Linear operations with clear input/output contracts","Add new Linear tools without modifying the core dispatch logic"],"best_for":["Teams building AI agents that need predictable, validated access to Linear operations","Developers extending mcp-linear with custom tools following the existing pattern","Organizations that want to audit which Linear operations are exposed to AI clients"],"limitations":["Tool schemas are static — no dynamic tool generation based on Linear workspace configuration","Schema validation adds ~5-10ms per tool call; not suitable for ultra-low-latency scenarios","No conditional tool availability — all 42 tools are always registered regardless of API token scopes","Zod schema definitions must be manually maintained when Linear API changes"],"requires":["Zod library for schema validation (included in package.json)","Understanding of Zod schema syntax to add new tools","Linear API token with scopes matching the tools being used"],"input_types":["Tool name string (e.g., 'linear_create_issue')","JSON object with tool arguments matching the Zod schema"],"output_types":["Validated argument object passed to handler function","Error object if validation fails (Zod validation error)"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-linear__cap_2","uri":"capability://tool.use.integration.issue.lifecycle.management.create.read.update.delete.search","name":"issue lifecycle management (create, read, update, delete, search)","description":"Exposes 18 issue-related tools covering the full lifecycle: create_issue, update_issue, delete_issue, get_issue, list_issues, search_issues, add_issue_comment, update_issue_comment, delete_issue_comment, and others. Each tool translates to a GraphQL operation via LinearService, which calls @linear/sdk's LinearClient. Handlers support filtering by status, assignee, project, cycle, and custom fields. The search_issues tool enables semantic and keyword-based queries. Comment operations support markdown formatting and attachment handling.","intents":["Create and manage Linear issues programmatically from an AI agent","Search and filter issues by status, assignee, project, or custom criteria","Add comments and attachments to issues as part of an automated workflow","Update issue properties (title, description, status, assignee, priority) in bulk or individually"],"best_for":["AI agents that need to triage, create, or update issues based on user requests","Automated workflows that generate issues from external data sources","Teams using Claude or Cursor to manage Linear issues conversationally"],"limitations":["No batch operations — each issue create/update is a separate GraphQL call","Comment attachments require pre-signed URLs; direct file upload is not supported","Custom field updates are limited to fields exposed in the Linear API schema","Issue search does not support full-text indexing — relies on Linear's built-in search","No transaction support — partial failures in multi-issue workflows are not rolled back"],"requires":["Linear API token with 'issues:write' scope for create/update/delete operations","Linear API token with 'issues:read' scope for read operations","Valid Linear workspace and project IDs for issue creation"],"input_types":["Issue creation: title (string), description (markdown string), projectId, assigneeId, priority, status","Issue update: issueId, and any subset of {title, description, status, assigneeId, priority, cycleId}","Issue search: query string, filters (projectId, statusId, assigneeId, cycleId)"],"output_types":["Issue object: {id, identifier, title, description, status, assignee, priority, createdAt, updatedAt, ...}","Issue list: array of issue objects with pagination metadata","Comment object: {id, body, author, createdAt, updatedAt}","Search results: array of matching issues with relevance scores"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-linear__cap_3","uri":"capability://tool.use.integration.project.and.initiative.hierarchy.navigation","name":"project and initiative hierarchy navigation","description":"Provides 5 project tools (get_project, list_projects, create_project, update_project, delete_project) and 10 initiative tools (get_initiative, list_initiatives, create_initiative, update_initiative, delete_initiative, link_initiative_to_project, etc.) that enable navigation and management of Linear's organizational hierarchy. Projects group issues; initiatives group projects. Handlers support filtering by team, status, and custom fields. The link_initiative_to_project tool enables cross-linking between organizational levels.","intents":["Retrieve project and initiative metadata to understand organizational structure","Create and manage projects and initiatives programmatically","Link initiatives to projects to organize work hierarchically","Filter projects and initiatives by team or status"],"best_for":["AI agents that need to understand Linear workspace structure before creating issues","Automated workflows that organize work into projects and initiatives","Teams using AI to manage strategic initiatives and project planning"],"limitations":["No bulk project/initiative creation — each operation is a separate API call","Initiative-to-project linking is unidirectional; no reverse queries for 'initiatives in this project'","Project templates are not exposed — custom project setup requires manual configuration","No project archival support — only active projects are returned by list_projects"],"requires":["Linear API token with 'projects:read' scope","Linear API token with 'projects:write' scope for create/update/delete operations","Valid team IDs if filtering by team"],"input_types":["Project creation: name (string), description, teamId, status","Initiative creation: name, description, targetDate, status","Link operation: initiativeId, projectId"],"output_types":["Project object: {id, name, description, team, status, createdAt, updatedAt, issueCount}","Initiative object: {id, name, description, targetDate, status, linkedProjects, progress}","List results: array of projects/initiatives with pagination"],"categories":["tool-use-integration","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-linear__cap_4","uri":"capability://tool.use.integration.cycle.and.sprint.management","name":"cycle and sprint management","description":"Exposes 3 cycle tools (get_cycle, list_cycles, create_cycle) that manage Linear's sprint/cycle abstraction. Cycles group issues into time-boxed iterations with start/end dates and status (planned, active, completed). Handlers support filtering by team and status. The create_cycle tool enables programmatic sprint planning. Cycles are the primary unit for iteration planning in Linear.","intents":["Retrieve current and upcoming cycles to understand sprint planning","Create new cycles programmatically for sprint planning automation","Filter issues by cycle to understand iteration scope"],"best_for":["AI agents that need to understand sprint structure before assigning issues","Automated sprint planning workflows","Teams using AI to manage iteration planning and capacity"],"limitations":["No cycle update or delete operations — cycles can only be created and read","No bulk issue assignment to cycles — must update issues individually","Cycle duration is fixed once created — cannot extend or shorten cycles","No capacity planning tools — cycle tools do not expose team capacity or velocity"],"requires":["Linear API token with 'cycles:read' scope","Linear API token with 'cycles:write' scope for create operations","Valid team ID for cycle creation"],"input_types":["Cycle creation: name (string), teamId, startsAt (ISO date), endsAt (ISO date), status"],"output_types":["Cycle object: {id, name, team, startsAt, endsAt, status, issueCount, completedIssueCount}","Cycle list: array of cycles with pagination"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-linear__cap_5","uri":"capability://tool.use.integration.team.and.workflow.configuration.access","name":"team and workflow configuration access","description":"Provides 2 team/workflow tools (get_team, list_teams) that expose team metadata, workflow states, and status definitions. Handlers return team names, descriptions, members, and available workflow states (e.g., Backlog, Todo, In Progress, Done). This enables AI agents to understand team structure and valid issue states before creating or updating issues.","intents":["Retrieve team metadata to understand workspace organization","Discover valid workflow states and status definitions for a team","Validate issue status values before updating issues"],"best_for":["AI agents that need to validate status values before updating issues","Workflows that discover team structure dynamically","Teams with custom workflows that need to be exposed to AI agents"],"limitations":["No team creation or update operations — teams must be managed in Linear UI","Workflow state definitions are read-only — cannot customize states via API","No team member management — cannot add/remove members programmatically","No team permission or role information — only basic team metadata"],"requires":["Linear API token with 'teams:read' scope"],"input_types":["Team ID or list all teams (no parameters)"],"output_types":["Team object: {id, name, description, members, workflowStates}","Workflow state: {id, name, type, color, position}","Team list: array of teams with metadata"],"categories":["tool-use-integration","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-linear__cap_6","uri":"capability://tool.use.integration.user.and.organization.identity.resolution","name":"user and organization identity resolution","description":"Provides 4 user/organization tools (get_user, list_users, get_organization, get_viewer) that resolve user identities and organization metadata. The get_viewer tool returns the authenticated user's identity (useful for determining who is running the agent). Handlers support filtering users by team or status. This enables agents to map user names to IDs and understand organization context.","intents":["Resolve user names to Linear user IDs for issue assignment","Discover organization metadata and settings","Determine the identity of the authenticated API token holder"],"best_for":["AI agents that need to assign issues to users by name","Workflows that discover user lists dynamically","Multi-tenant systems that need to validate user identity"],"limitations":["No user creation or deletion — users must be invited in Linear UI","User search is limited to exact name matching or team filtering — no fuzzy search","No user role or permission information — only basic identity metadata","Organization metadata is read-only — cannot update settings via API"],"requires":["Linear API token with 'users:read' scope"],"input_types":["User ID or email, or list all users (no parameters)"],"output_types":["User object: {id, name, email, team, status, createdAt}","Organization object: {id, name, logoUrl, createdAt}","Viewer object: {id, name, email, organization}"],"categories":["tool-use-integration","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-linear__cap_7","uri":"capability://tool.use.integration.stateless.token.based.authentication.with.multiple.deployment.modes","name":"stateless, token-based authentication with multiple deployment modes","description":"Authenticates to Linear using Personal API Tokens supplied via environment variable (LINEAR_API_TOKEN) or CLI flag (--token), parsed by yargs in src/index.ts. The token is passed to @linear/sdk's LinearClient constructor and never stored by the server. Supports three deployment modes: npx (recommended), Docker, and Smithery. The runServer() function in src/index.ts bootstraps authentication before initializing the MCP server. No session management or token refresh logic is required because Linear tokens do not expire.","intents":["Authenticate to Linear without hardcoding credentials in code","Deploy mcp-linear in multiple environments (local, Docker, Smithery) with consistent authentication","Ensure tokens are never persisted on disk or in memory longer than necessary"],"best_for":["Teams deploying mcp-linear in CI/CD pipelines or containerized environments","Developers running mcp-linear locally for testing","Organizations that want to use Smithery for managed MCP server hosting"],"limitations":["No OAuth2 support — requires Personal API Token, not suitable for multi-user SaaS","Token scopes are not validated — server assumes token has all required permissions","No token rotation or refresh logic — tokens must be manually rotated in Linear settings","CLI flag (--token) exposes token in process arguments — environment variable is more secure","No built-in token revocation — if token is compromised, must revoke manually in Linear"],"requires":["Linear Personal API Token (generated in Linear workspace settings)","Either LINEAR_API_TOKEN environment variable or --token CLI flag","Node.js 18+ for npx deployment, Docker for container deployment, or Smithery account for managed hosting"],"input_types":["Environment variable: LINEAR_API_TOKEN=<token>","CLI flag: --token <token>",".env file: LINEAR_API_TOKEN=<token> (loaded by dotenv during development)"],"output_types":["Authenticated LinearClient instance passed to all tool handlers","Error if token is missing or invalid (caught during runServer() initialization)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-linear__cap_8","uri":"capability://tool.use.integration.extensible.tool.handler.architecture.for.adding.new.linear.operations","name":"extensible tool handler architecture for adding new linear operations","description":"The tool dispatch system is designed for extensibility: new tools are added by creating a Zod schema in src/tools/definitions/ and a corresponding handler in src/tools/handlers/. The handler receives validated arguments and calls LinearService methods. The MCP server automatically registers new tools without code changes. This pattern is documented in the 'Adding New Tools' section of the DeepWiki. The separation of schemas, handlers, and service layer makes it easy to add new Linear operations without understanding the full codebase.","intents":["Add custom Linear operations without modifying core MCP or dispatch logic","Extend mcp-linear with domain-specific tools for your team","Contribute new tools back to the open-source project"],"best_for":["Teams that need custom Linear operations not exposed by default","Contributors extending mcp-linear for the open-source community","Organizations building internal forks with custom tools"],"limitations":["Adding new tools requires understanding Zod schema syntax and TypeScript","No code generation for tool schemas — must be written manually","Tool handlers must call LinearService methods — direct SDK access is not supported","No hot-reloading — server must be restarted to register new tools","Testing new tools requires running the full MCP server stack"],"requires":["TypeScript knowledge","Understanding of Zod schema syntax","Understanding of Linear GraphQL API and @linear/sdk","Access to mcp-linear source code"],"input_types":["Zod schema definition for tool parameters","Handler function that receives validated arguments"],"output_types":["Tool registered in MCP server with schema and handler","Tool callable from any MCP client"],"categories":["tool-use-integration","code-generation-editing"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":44,"verified":false,"data_access_risk":"high","permissions":["Node.js 18+ (for @modelcontextprotocol/sdk compatibility)","Linear Personal API Token (generated in Linear workspace settings)","MCP-compatible client (Cursor, Claude Desktop, Claude VSCode, or GoMCP)","@modelcontextprotocol/sdk and @linear/sdk npm packages","Zod library for schema validation (included in package.json)","Understanding of Zod schema syntax to add new tools","Linear API token with scopes matching the tools being used","Linear API token with 'issues:write' scope for create/update/delete operations","Linear API token with 'issues:read' scope for read operations","Valid Linear workspace and project IDs for issue creation"],"failure_modes":["Requires Linear Personal API Token with appropriate scopes — no OAuth2 support","All tool calls are synchronous; no built-in batching or transaction support across multiple operations","MCP stdio transport adds latency for each tool invocation — not suitable for high-frequency polling scenarios","No caching layer between MCP requests and Linear GraphQL — each call hits the API","Tool schemas are static — no dynamic tool generation based on Linear workspace configuration","Schema validation adds ~5-10ms per tool call; not suitable for ultra-low-latency scenarios","No conditional tool availability — all 42 tools are always registered regardless of API token scopes","Zod schema definitions must be manually maintained when Linear API changes","No batch operations — each issue create/update is a separate GraphQL call","Comment attachments require pre-signed URLs; direct file upload is not supported","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.28,"ecosystem":0.39999999999999997,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:03.577Z","last_scraped_at":"2026-05-03T14:00:15.503Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=linear","compare_url":"https://unfragile.ai/compare?artifact=linear"}},"signature":"6VP2x9d/aqXwNwO461GJ5ihmWa+UzsEV4MJHyk85HBjkZIOa2LwehG6YcOnFvqzExl4NzsieYXtra7BBC1YzAw==","signedAt":"2026-06-21T05:59:18.661Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/linear","artifact":"https://unfragile.ai/linear","verify":"https://unfragile.ai/api/v1/verify?slug=linear","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}