{"_id":"@primeradianthq/streamlinear","_rev":"5-fe83f7d219581cba4f651b1b1660e911","name":"@primeradianthq/streamlinear","dist-tags":{"latest":"1.2.1"},"versions":{"1.1.1":{"name":"@primeradianthq/streamlinear","version":"1.1.1","keywords":["linear","mcp","claude-code","model-context-protocol"],"author":{"name":"Prime Radiant"},"license":"MIT","_id":"@primeradianthq/streamlinear@1.1.1","maintainers":[{"name":"arittr","email":"drew@ritter.dev"},{"name":"obra","email":"jesse@fsck.com"},{"name":"windbrook","email":"matt.knopp@gmail.com"}],"contributors":[{"name":"Jesse Vincent","email":"jesse@fsck.com"}],"homepage":"https://github.com/primeradianthq/streamlinear#readme","bugs":{"url":"https://github.com/primeradianthq/streamlinear/issues"},"bin":{"streamlinear":"mcp/dist/index.js","streamlinear-cli":"mcp/dist/cli.js"},"dist":{"shasum":"3971757637ab1b8d63e147dc13d280f17501cd48","tarball":"https://registry.npmjs.org/@primeradianthq/streamlinear/-/streamlinear-1.1.1.tgz","fileCount":9,"integrity":"sha512-b0Wcb+Pd81N6T4FinrfQD3VMYxM8L7ifbynMCbO4fACghDJ2Njpkcc5kvcrhGSMtxSJBzMfGl2TVeld3RvP+Yg==","signatures":[{"sig":"MEUCIBlZcx8cNE7FlpY0vZ7MfkJ63myR4AmDM3iEnWuyok3SAiEAwd6+JlcAkJ6Tjk0ncNHd1/TmD4A0YhTPdpwMhNP//R4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":877488},"engines":{"node":">=20"},"gitHead":"09caf85d9cf0b28e86ee8d9a230e3faeac0c69e9","scripts":{"test":"npm --prefix mcp run test","build":"npm --prefix mcp run build","check":"npm run build && npm run typecheck && npm run test && npm run dist:check && npm run package:check && npm run audit:prod && npm run audit:prod:mcp && npm run pack:verify","typecheck":"npm --prefix mcp run typecheck","audit:prod":"node scripts/audit-visibility.mjs --workspace root","dist:check":"node scripts/check-dist-artifacts.mjs","pack:verify":"node scripts/verify-pack.mjs","audit:summary":"node scripts/audit-visibility.mjs --workspace all --write docs/release/streamlinear-1.1.1-audit.md","hooks:install":"lefthook install","package:check":"node scripts/check-package-metadata.mjs","audit:prod:mcp":"node scripts/audit-visibility.mjs --workspace mcp","release:verify-tag":"node scripts/check-release-tag.mjs"},"_npmUser":{"name":"arittr","email":"drew@ritter.dev"},"repository":{"url":"git+https://github.com/primeradianthq/streamlinear.git","type":"git"},"_npmVersion":"11.14.0","description":"A lightweight Linear MCP for Claude Code","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.1.6"},"_npmOperationalInternal":{"tmp":"tmp/streamlinear_1.1.1_1778216307931_0.5321354409635506","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@primeradianthq/streamlinear","version":"1.1.3","keywords":["linear","mcp","claude-code","model-context-protocol"],"author":{"name":"Prime Radiant"},"license":"MIT","_id":"@primeradianthq/streamlinear@1.1.3","maintainers":[{"name":"arittr","email":"drew@ritter.dev"},{"name":"obra","email":"jesse@fsck.com"},{"name":"windbrook","email":"matt.knopp@gmail.com"}],"contributors":[{"name":"Jesse Vincent","email":"jesse@fsck.com"}],"homepage":"https://github.com/prime-radiant-inc/streamlinear#readme","bugs":{"url":"https://github.com/prime-radiant-inc/streamlinear/issues"},"bin":{"streamlinear":"mcp/dist/index.js","streamlinear-cli":"mcp/dist/cli.js"},"dist":{"shasum":"943021b318380b1af0d882c5a450ba7b4749731f","tarball":"https://registry.npmjs.org/@primeradianthq/streamlinear/-/streamlinear-1.1.3.tgz","fileCount":9,"integrity":"sha512-nM3bT4B72EopIVl6WTtSfXPeKTma1Li1ppmFzeNvloF9pncJECwtUXvXlPyBe8DiMQtWFZfaAtfgl8+UTNWO+Q==","signatures":[{"sig":"MEYCIQCIyUD5EN7SIn75OHUlepdvSr+UY83oF2ZysvKiasPW6gIhAPGMLvMtScixfVZW+BoyRRz70+eVLLdMppxWXMaILoac","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@primeradianthq%2fstreamlinear@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":878119},"engines":{"node":">=20"},"gitHead":"d02cee318021e3f01ee4d1c549996f68adcd982d","scripts":{"test":"npm --prefix mcp run test","build":"npm --prefix mcp run build","check":"npm run build && npm run typecheck && npm run test && npm run dist:check && npm run package:check && npm run audit:prod && npm run audit:prod:mcp && npm run pack:verify","typecheck":"npm --prefix mcp run typecheck","audit:prod":"node scripts/audit-visibility.mjs --workspace root","dist:check":"node scripts/check-dist-artifacts.mjs","pack:verify":"node scripts/verify-pack.mjs","audit:summary":"node scripts/audit-visibility.mjs --workspace all --write docs/release/streamlinear-1.1.3-audit.md","hooks:install":"lefthook install","package:check":"node scripts/check-package-metadata.mjs","audit:prod:mcp":"node scripts/audit-visibility.mjs --workspace mcp","release:verify-tag":"node scripts/check-release-tag.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca088511-b752-4213-bf9e-b2921492f192"}},"repository":{"url":"git+https://github.com/prime-radiant-inc/streamlinear.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight Linear MCP for Claude Code","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.1.6"},"_npmOperationalInternal":{"tmp":"tmp/streamlinear_1.1.3_1778217710746_0.6983008626476868","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@primeradianthq/streamlinear","version":"1.2.0","keywords":["linear","mcp","claude-code","model-context-protocol"],"author":{"name":"Prime Radiant"},"license":"MIT","_id":"@primeradianthq/streamlinear@1.2.0","maintainers":[{"name":"arittr","email":"drew@ritter.dev"},{"name":"obra","email":"jesse@fsck.com"}],"contributors":[{"name":"Jesse Vincent","email":"jesse@fsck.com"}],"homepage":"https://github.com/prime-radiant-inc/streamlinear#readme","bugs":{"url":"https://github.com/prime-radiant-inc/streamlinear/issues"},"bin":{"streamlinear":"mcp/dist/index.js","streamlinear-cli":"mcp/dist/cli.js"},"dist":{"shasum":"57a6e68c2c8eb6149520f9a135f7fbfa13b92e84","tarball":"https://registry.npmjs.org/@primeradianthq/streamlinear/-/streamlinear-1.2.0.tgz","fileCount":9,"integrity":"sha512-7KP66Z4SB7GTywk/gSlmihg0kZuPOoOF22lGRiLXtVeew0kA8Astdt9YcKhqwsltE+Fx4hyNW4ExLnYTTPpwtA==","signatures":[{"sig":"MEQCIBVtuCiiBNmKwn4vTl/VWtHkp+4/5ql+0YgQW4DEAmFeAiAIqRzxRrJ5Bmk5ag/18I/sgxXuB/Fi8ofzWI15r8VXQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFHMtk5Wa9mV/LeEakNxAPT/v57ulVCeXj4dnbNxgqmkAiAnTdRkl7X/vUWL/P9D927SEuy2/Tb9HdWs6hzj8t6/Vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@primeradianthq%2fstreamlinear@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2169095},"engines":{"node":">=20"},"gitHead":"58af8d2d151d07a7108b187598b821894d60f6c3","scripts":{"test":"npm --prefix mcp run test","build":"npm --prefix mcp run build","check":"npm run build && npm run typecheck && npm run test && npm run dist:check && npm run package:check && npm run audit:prod && npm run audit:prod:mcp && npm run pack:verify","typecheck":"npm --prefix mcp run typecheck","audit:prod":"node scripts/audit-visibility.mjs --workspace root","dist:check":"node scripts/check-dist-artifacts.mjs","pack:verify":"node scripts/verify-pack.mjs","audit:summary":"node scripts/audit-visibility.mjs --workspace all --write docs/release/streamlinear-1.2.0-audit.md","hooks:install":"lefthook install","package:check":"node scripts/check-package-metadata.mjs","audit:prod:mcp":"node scripts/audit-visibility.mjs --workspace mcp","release:verify-tag":"node scripts/check-release-tag.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"ca088511-b752-4213-bf9e-b2921492f192"}},"repository":{"url":"git+https://github.com/prime-radiant-inc/streamlinear.git","type":"git"},"_npmVersion":"11.19.1","description":"A lightweight Linear MCP for Claude Code","directories":{},"_nodeVersion":"24.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.1.6"},"_npmOperationalInternal":{"tmp":"tmp/streamlinear_1.2.0_1793328639001_0.8510078279992425","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"_id":"@primeradianthq/streamlinear@1.2.1","bin":{"streamlinear":"mcp/dist/index.js","streamlinear-cli":"mcp/dist/cli.js"},"bugs":{"url":"https://github.com/prime-radiant-inc/streamlinear/issues"},"dist":{"shasum":"dd72c273a4bffff2e014d4a87a8e5aab8f37b82f","tarball":"https://registry.npmjs.org/@primeradianthq/streamlinear/-/streamlinear-1.2.1.tgz","fileCount":9,"integrity":"sha512-hsp47UBdE4Vul3nQZWDDVgDFBiHYv9J/JtRCySeJDpiCc6/ke0YN9XGTK7XYabw4Wnzn3Zb+XQXK3pHS92wJHQ==","signatures":[{"sig":"MEYCIQDKSk2yGu7/snznvb+raeWDyco4LaqrdtNhIFHy8JNW4wIhALbYZRL1vMvAUr2GlgCTDBIl1wucpANIg2xqsQlVUwi5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFN1PniGy6djI0j+r9/ee4tYOnyEnStTt7lSMsFCstqdAiEAz6wOzj1wA/xlim3QYr4iyCWNmzKHkqg680+OHB2eeg0="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@primeradianthq%2fstreamlinear@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2170621},"name":"@primeradianthq/streamlinear","author":{"name":"Prime Radiant"},"engines":{"node":">=20"},"gitHead":"7acea9975d192b9a9871386d070fb2fb978e4821","license":"MIT","scripts":{"test":"npm --prefix mcp run test","build":"npm --prefix mcp run build","check":"npm run build && npm run typecheck && npm run test && npm run dist:check && npm run package:check && npm run audit:prod && npm run audit:prod:mcp && npm run pack:verify","typecheck":"npm --prefix mcp run typecheck","audit:prod":"node scripts/audit-visibility.mjs --workspace root","dist:check":"node scripts/check-dist-artifacts.mjs","pack:verify":"node scripts/verify-pack.mjs","audit:summary":"node scripts/audit-visibility.mjs --workspace all --write docs/release/streamlinear-1.2.1-audit.md","hooks:install":"lefthook install","package:check":"node scripts/check-package-metadata.mjs","audit:prod:mcp":"node scripts/audit-visibility.mjs --workspace mcp","release:verify-tag":"node scripts/check-release-tag.mjs"},"version":"1.2.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"ca088511-b752-4213-bf9e-b2921492f192"}},"homepage":"https://github.com/prime-radiant-inc/streamlinear#readme","keywords":["linear","mcp","claude-code","model-context-protocol"],"repository":{"url":"git+https://github.com/prime-radiant-inc/streamlinear.git","type":"git"},"_npmVersion":"11.19.1","description":"A lightweight Linear MCP for Claude Code","directories":{},"maintainers":[{"name":"arittr","email":"drew@ritter.dev"},{"name":"obra","email":"jesse@fsck.com"}],"_nodeVersion":"24.22.1","contributors":[{"name":"Jesse Vincent","email":"jesse@fsck.com"}],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.1.6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/streamlinear_1.2.1_1793336307311_0.010198255492388064"}}},"time":{"created":"2026-05-08T04:58:27.843Z","modified":"2026-10-30T04:58:28.115Z","1.1.1":"2026-05-08T04:58:28.081Z","1.1.3":"2026-05-08T05:21:50.928Z","1.2.0":"2026-10-30T02:50:39.104Z","1.2.1":"2026-10-30T04:58:27.443Z"},"bugs":{"url":"https://github.com/prime-radiant-inc/streamlinear/issues"},"author":{"name":"Prime Radiant"},"license":"MIT","homepage":"https://github.com/prime-radiant-inc/streamlinear#readme","keywords":["linear","mcp","claude-code","model-context-protocol"],"repository":{"url":"git+https://github.com/prime-radiant-inc/streamlinear.git","type":"git"},"description":"A lightweight Linear MCP for Claude Code","contributors":[{"name":"Jesse Vincent","email":"jesse@fsck.com"}],"maintainers":[{"name":"arittr","email":"drew@ritter.dev"},{"name":"obra","email":"jesse@fsck.com"}],"readme":"# streamlinear\n\nA lightweight Linear MCP for Claude Code. One tool, seven actions.\n\n## Why?\n\nThe standard Linear MCP uses ~17,000 tokens for tool definitions.\n\nstreamlinear uses ~500 tokens.\n\n## Design Philosophy\n\nInstead of 23 separate tools, streamlinear has **one tool with action dispatch**:\n\n```json\n{\"action\": \"search\"}\n{\"action\": \"get\", \"id\": \"ABC-123\"}\n{\"action\": \"update\", \"id\": \"ABC-123\", \"state\": \"Done\"}\n{\"action\": \"comment\", \"id\": \"ABC-123\", \"body\": \"Fixed!\"}\n{\"action\": \"create\", \"title\": \"New bug\", \"team\": \"ENG\"}\n{\"action\": \"graphql\", \"graphql\": \"query { viewer { name } }\"}\n{\"action\": \"help\"}\n```\n\n## Actions\n\n| Action | Purpose |\n|--------|---------|\n| `search` | Find issues (smart defaults: your active issues) |\n| `get` | Issue details by ABC-123, URL, or UUID |\n| `update` | Change state, priority, assignee |\n| `comment` | Add comment to issue |\n| `create` | Create new issue |\n| `graphql` | Raw GraphQL for anything else |\n| `help` | Full documentation |\n\n## Installation\n\n### Single Workspace\n\nAdd to your `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"linear\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@primeradianthq/streamlinear@1.2.1\"],\n      \"env\": {\n        \"LINEAR_API_TOKEN\": \"lin_api_xxxxx\"\n      }\n    }\n  }\n}\n```\n\n### Multiple Workspaces\n\nTo use streamlinear with multiple Linear workspaces, create separate MCP entries and map each secret to `LINEAR_API_TOKEN`:\n\n```json\n{\n  \"mcpServers\": {\n    \"linear-personal\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@primeradianthq/streamlinear@1.2.1\"],\n      \"env\": {\n        \"LINEAR_API_TOKEN\": \"${LINEAR_PERSONAL_TOKEN}\"\n      },\n      \"envFrom\": [\"LINEAR_PERSONAL_TOKEN\"]\n    },\n    \"linear-work\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@primeradianthq/streamlinear@1.2.1\"],\n      \"env\": {\n        \"LINEAR_API_TOKEN\": \"${LINEAR_WORK_TOKEN}\"\n      },\n      \"envFrom\": [\"LINEAR_WORK_TOKEN\"]\n    }\n  }\n}\n```\n\n### Installed Package\n\nWhen installed as a dependency, the package provides two binaries:\n\n```bash\nnpm install @primeradianthq/streamlinear@1.2.1\nnpx streamlinear-cli help\nnpx streamlinear\n```\n\nThe MCP server requires `LINEAR_API_TOKEN` at runtime. Consumers such as Scribble may expose their own operator-facing variable and map it to `LINEAR_API_TOKEN` before starting streamlinear.\n\n### Post-Only Mode\n\nSet `STREAMLINEAR_POST_ONLY=1` when confidentiality requires that the agent never read issue content. The server then refuses the read actions (`search`, `get`, and `graphql`) while `create`, `update`, `comment`, and `help` keep working. Internal lookups such as team names and workflow states still happen; they expose workspace metadata, not issue content.\n\n## Smart Defaults\n\n- Teams and workflow states shown in tool description (fetched at startup)\n- `search` with no params → your assigned issues, not completed/canceled\n- IDs accept ABC-123, Linear URLs, or UUIDs\n- State names are fuzzy matched (\"done\" → \"Done\", \"in prog\" → \"In Progress\")\n- `assignee: \"me\"` uses the authenticated user\n- `@name` in create descriptions and comment bodies becomes a Linear profile link when it matches exactly one workspace user\n- Error messages show valid options when things fail\n\n## The GraphQL Escape Valve\n\nFor anything not covered by the main actions, use raw GraphQL:\n\n```json\n{\n  \"action\": \"graphql\",\n  \"graphql\": \"query { projects { nodes { id name } } }\"\n}\n```\n\nUse `{\"action\": \"help\"}` for common GraphQL patterns.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}