linear
Linear
Manage Linear issues and projects via the GraphQL API.
Environment Variables
LINEAR_API_KEY- API key (generate at https://linear.app/settings/api)
List issues
curl -s -X POST -H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.linear.app/graphql" \
-d '{"query":"{ issues(first: 20) { nodes { id title state { name } assignee { name } priority } } }"}' | jq '.data.issues.nodes[] | {id, title, state: .state.name, assignee: .assignee.name, priority}'
Create issue
curl -s -X POST -H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.linear.app/graphql" \
-d '{"query":"mutation { issueCreate(input: { teamId: \"TEAM_ID\", title: \"Bug: Login broken\", description: \"Details here\", priority: 2 }) { success issue { id title url } } }"}' | jq '.data.issueCreate.issue'
Update issue
curl -s -X POST -H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.linear.app/graphql" \
-d '{"query":"mutation { issueUpdate(id: \"ISSUE_ID\", input: { stateId: \"STATE_ID\", priority: 1 }) { success issue { id title state { name } } } }"}' | jq '.data.issueUpdate.issue'
List projects
curl -s -X POST -H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.linear.app/graphql" \
-d '{"query":"{ projects(first: 20) { nodes { id name state } } }"}' | jq '.data.projects.nodes[] | {id, name, state}'
List teams
curl -s -X POST -H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.linear.app/graphql" \
-d '{"query":"{ teams { nodes { id name key } } }"}' | jq '.data.teams.nodes[] | {id, name, key}'
Get issue
curl -s -X POST -H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.linear.app/graphql" \
-d '{"query":"{ issue(id: \"ISSUE_ID\") { id title description state { name } assignee { name } priority labels { nodes { name } } } }"}' | jq '.data.issue'
Add comment
curl -s -X POST -H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.linear.app/graphql" \
-d '{"query":"mutation { commentCreate(input: { issueId: \"ISSUE_ID\", body: \"Comment text here\" }) { success comment { id body } } }"}' | jq '.data.commentCreate.comment'
List cycles
curl -s -X POST -H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.linear.app/graphql" \
-d '{"query":"{ cycles(first: 10) { nodes { id name startsAt endsAt progress } } }"}' | jq '.data.cycles.nodes[] | {id, name, startsAt, endsAt, progress}'
More from thinkfleetai/thinkfleet-engine
local-whisper
Local speech-to-text using OpenAI Whisper. Runs fully offline after model download. High quality transcription with multiple model sizes.
148flyio-cli-public
Use the Fly.io flyctl CLI for deploying and operating apps on Fly.io: deploys (local or remote builder), viewing status/logs, SSH/console, secrets/config, scaling, machines, volumes, and Fly Postgres (create/attach/manage databases). Use when asked to deploy to Fly.io, debug fly deploy/build/runtime failures, set up GitHub Actions deploys/previews, or safely manage Fly apps and Postgres.
24kagi-search
Web search using Kagi Search API. Use when you need to search the web for current information, facts, or references. Requires KAGI_API_KEY in the environment.
22feishu-bridge
Connect a Feishu (Lark) bot to ThinkFleet via WebSocket long-connection. No public server, domain, or ngrok required. Use when setting up Feishu/Lark as a messaging channel, troubleshooting the Feishu bridge, or managing the bridge service (start/stop/logs). Covers bot creation on Feishu Open Platform, credential setup, bridge startup, macOS launchd auto-restart, and group chat behavior tuning.
13bambu-local
Control Bambu Lab 3D printers locally via MQTT (no cloud). Supports A1, A1 Mini, P1P, P1S, X1C.
10voice-transcribe
Transcribe audio files using OpenAI's gpt-4o-mini-transcribe model with vocabulary hints and text replacements. Requires uv (https://docs.astral.sh/uv/).
10