npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@zapier/linear-connector

v0.1.4

Published

Agent-callable Linear tools — create, update, find, and comment on issues; manage projects; and resolve teams, states, labels, users, and cycles. Use when the user mentions Linear or wants to track issues, even if they don't name Linear explicitly.

Readme

@zapier/linear-connector

Agent-callable tools for Linear, wrapping the Linear GraphQL API. It covers the day-to-day issue-tracking job: create and update issues, comment on them and attach links, find issues by identifier or filter, manage projects and post status updates, and resolve the teams, workflow states, labels, users, milestones, and cycles an agent needs to fill those records out — 22 scripts in all. Authenticate with a single connection string: a Linear personal API key (LINEAR_API_KEY) passed directly, or a Zapier-managed connection.

Independent, unofficial connector for Linear. Not affiliated with, endorsed by, or sponsored by Linear. "Linear" is a trademark of its owner, used only to identify the service this connector works with.

When to use this

Reach for this connector when an agent needs to read or write Linear issues and projects — open and triage issues, move them through workflow states, assign and label them, comment, and post project updates. It exposes Linear's workspace resolvers (teams, states, labels, users, cycles, milestones) as first-class tools, so an agent can turn a name into an id and act without a human clicking through a UI.

When NOT to use this

  • Triggers / event subscriptions. This connector is non-trigger by design; it does not subscribe to new-issue, comment, or project-update events.
  • Customer requests. Creating or finding customers and their needs is not in this version.
  • Hard deletes. There is no permanent delete for an issue — archiveIssue archives it reversibly.

Install

This connector is the same artifact across four shapes: MCP server, CLI bin, importable Node module, and an Agent Skill anchored by SKILL.md. Pick the shape that matches how your agent runs.

# Run a script with zero install — npx fetches the package on first use
export <ENV_VAR>=xxx
npx @zapier/linear-connector@latest run <script> '<input-json>' --connection env:<ENV_VAR>

# Install as a dependency to import the functions in your own code
npm install @zapier/linear-connector

# Or install as an Agent Skill (https://agentskills.io)
npx skills add zapier/connectors --skill linear

Auth is one [<resolver>:]<value> connection string passed with --connection — a selector, not the secret. The <resolver>: prefix is optional; a bare value is claimed by the first matching resolver. See Auth below for the with/without-Zapier tradeoffs and how to find a connection ID.

MCP server

Run the connector as an MCP server over stdio so any MCP-aware client (Claude Desktop, Cursor, Claude Code, …) auto-discovers the scripts as tools — add one stanza to the client's config:

// e.g. claude_desktop_config.json or .cursor/mcp.json
{
  "mcpServers": {
    "linear": {
      "command": "npx",
      "args": ["@zapier/linear-connector", "mcp"]
    }
  }
}

--connection is optional — omit it to pass a connection per tool call, or add "--connection", "zapier:<connection-id>" (or "env:<ENV_VAR>" with "env": { "<ENV_VAR>": "xxx" }) to args to set a default.

Cloning the source

You don't need to clone anything to use this connector — the options above already cover that. Want the actual repo source instead, to read the script code, browse references/, run this connector's tests, or hack on it? Clone with a path filter so you only fetch this one connector, not the whole catalog:

git clone --filter=blob:none --sparse https://github.com/zapier/connectors.git
cd connectors && git sparse-checkout set apps/linear
cd apps/linear && npm install

See the main README to clone several connectors at once.

Scripts

| Script | Description | | ------------------ | --------------------------------------------------------------------------------------------------------------- | | createIssue | Create a Linear issue in a team, with optional assignee, state, labels, project, cycle, priority, and due date. | | updateIssue | Update an existing issue's fields — title, description, state, assignee, priority, project, cycle, or due date. | | archiveIssue | Archive an issue — Linear's reversible "delete" (recoverable from the archive, not hard-deleted). | | addIssueLabel | Add a single label to an issue without disturbing its other labels. | | removeIssueLabel | Remove a single label from an issue, leaving its other labels intact. | | createComment | Post a Markdown comment on an issue. | | createAttachment | Attach a link (URL) to an issue — a related ticket, doc, or PR (link-based, not a file upload). |

Issues — read

| Script | Description | | ------------------- | -------------------------------------------------------------------------------------------------------- | | getIssue | Fetch one issue by UUID or identifier, with its state, assignee, team, project, and labels. | | searchIssues | Find issues by title text, assignee, state, team, project, or label; returns compact rows plus a cursor. | | listIssueComments | List the comments on an issue; returns a page plus a cursor. |

Projects

| Script | Description | | --------------------- | -------------------------------------------------------------------------------------------------- | | createProject | Create a project in one or more teams, with an optional description, lead, and start/target dates. | | updateProject | Update a project's name, description, state, lead, or target date. | | getProject | Fetch one project by id, with its name, description, url, and state. | | listProjects | List projects, optionally scoped to a team; resolves a project name to its id. | | createProjectUpdate | Post a status update to a project, with an optional health signal (onTrack, atRisk, offTrack). |

Workspace navigation (resolvers)

| Script | Description | | ----------------------- | -------------------------------------------------------------------------------------- | | listTeams | List the workspace's teams; resolves a team name or key to its id. | | listWorkflowStates | List a team's workflow states (statuses); resolves a status name to its id. | | listLabels | List issue labels, optionally scoped to a team; resolves a label name to its id. | | listUsers | List workspace users; resolves a name or email to a user id for assigneeId. | | listProjectMilestones | List a project's milestones; resolves a milestone name to its id. | | listCycles | List a team's cycles (sprints); resolves a cycle to its id, or find the current cycle. | | getViewer | Return the authenticated user (the "me" identity) — id, name, email. |

Run npx @zapier/linear-connector@latest run <script> --help to see any script's exact input contract + the available resolvers.

Usage

Each named export is the consumer-facing (input, opts) => Promise<{ data, meta }> function. Pass auth as one [<resolver>:]<value> string, e.g. { connection: "env:<ENV_VAR>" }.

import { createIssue } from "@zapier/linear-connector";

const { data, meta } = await createIssue(
  {
    teamId: "e7f3b2a0-1c4d-4e8a-9f2b-6a1c3d5e7f90", // resolve with listTeams
    title: "Investigate flaky checkout test",
    description: "Fails ~1 in 5 runs on CI. See attached logs.",
    priority: 2, // 0 none, 1 urgent, 2 high, 3 medium, 4 low
  },
  { connection: "env:LINEAR_API_KEY" },
);

console.log(data.identifier, data.url); // e.g. "ENG-118", "https://linear.app/…"
console.log(meta.outputDataValidation); // { skipped: false, droppedPaths: null }

Auth

Already have a connection value? Pass it as shown above — --connection for the CLI/MCP shapes, { connection } for imported functions. No connection yet? Pick one:

| | Load | | ------------------------------------ | ---------------------------------------------------------------------- | | Pass the credential directly | references/use-without-zapier.md | | Route it through a Zapier connection | references/use-with-zapier.md |

Links

Legal

Scope of license. Zapier licenses only the connector code in this package. Zapier grants no rights in Linear's API, services, data, schemas, documentation, or other materials, which remain the property of Linear. Your use of Linear's API is governed by your own agreement with Linear.

Trademarks and affiliation. Linear and its logos are trademarks of their owner, used here only to identify the service this connector works with. This connector is not affiliated with, endorsed by, or sponsored by Linear.

Your responsibility. This connector calls Linear's API using credentials you supply. You are responsible for holding a valid Linear account, for complying with Linear's API terms, developer policies, and acceptable use rules, and for the data you send and receive through it.

No warranty. This connector is provided "as is," without warranty of any kind, and is not an official Linear product. Zapier is not responsible for changes Linear makes to its API or for any consequence of your use of Linear's API. See the repository LICENSE for the full disclaimer.

Forks. You may fork and modify this connector under the Elastic License 2.0. You may state that your fork is "based on" Zapier's connector, but you may not use the "Zapier" name or logo as the name or branding of your fork, or in any way that suggests Zapier produces, endorses, or supports it.

Licensed under the Elastic License 2.0. See the repository LICENSE and NOTICE.