jira
Jira
Manage Jira issues, projects, and boards via the REST API.
Environment Variables
JIRA_BASE_URL- Jira instance URL (e.g.https://yourorg.atlassian.net)JIRA_EMAIL- Atlassian account emailJIRA_API_TOKEN- API token (generate at https://id.atlassian.com/manage-profile/security/api-tokens)
Auth header
All requests use Basic auth:
JIRA_AUTH=$(echo -n "$JIRA_EMAIL:$JIRA_API_TOKEN" | base64)
Search issues (JQL)
curl -s -H "Authorization: Basic $(echo -n "$JIRA_EMAIL:$JIRA_API_TOKEN" | base64)" \
-H "Content-Type: application/json" \
"$JIRA_BASE_URL/rest/api/3/search?jql=project%3DDEV%20AND%20status%3D%22In%20Progress%22&maxResults=10" | jq '.issues[] | {key, summary: .fields.summary, status: .fields.status.name}'
Get issue details
curl -s -H "Authorization: Basic $(echo -n "$JIRA_EMAIL:$JIRA_API_TOKEN" | base64)" \
"$JIRA_BASE_URL/rest/api/3/issue/DEV-123" | jq '{key, summary: .fields.summary, status: .fields.status.name, assignee: .fields.assignee.displayName, description: .fields.description}'
Create issue
curl -s -X POST -H "Authorization: Basic $(echo -n "$JIRA_EMAIL:$JIRA_API_TOKEN" | base64)" \
-H "Content-Type: application/json" \
"$JIRA_BASE_URL/rest/api/3/issue" \
-d '{
"fields": {
"project": {"key": "DEV"},
"summary": "Bug: Login page broken",
"description": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Description here"}]}]},
"issuetype": {"name": "Bug"}
}
}' | jq '{key: .key, self: .self}'
Transition issue (change status)
# First get available transitions
curl -s -H "Authorization: Basic $(echo -n "$JIRA_EMAIL:$JIRA_API_TOKEN" | base64)" \
"$JIRA_BASE_URL/rest/api/3/issue/DEV-123/transitions" | jq '.transitions[] | {id, name}'
# Then transition
curl -s -X POST -H "Authorization: Basic $(echo -n "$JIRA_EMAIL:$JIRA_API_TOKEN" | base64)" \
-H "Content-Type: application/json" \
"$JIRA_BASE_URL/rest/api/3/issue/DEV-123/transitions" \
-d '{"transition": {"id": "31"}}'
Add comment
curl -s -X POST -H "Authorization: Basic $(echo -n "$JIRA_EMAIL:$JIRA_API_TOKEN" | base64)" \
-H "Content-Type: application/json" \
"$JIRA_BASE_URL/rest/api/3/issue/DEV-123/comment" \
-d '{"body": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Comment from ThinkFleetBot"}]}]}}' | jq '{id: .id, created: .created}'
List projects
curl -s -H "Authorization: Basic $(echo -n "$JIRA_EMAIL:$JIRA_API_TOKEN" | base64)" \
"$JIRA_BASE_URL/rest/api/3/project" | jq '.[] | {key, name}'
Notes
- Jira Cloud uses API v3 with ADF (Atlassian Document Format) for descriptions/comments.
- Jira Server/Data Center may use API v2 with plain text or wiki markup.
- Rate limits apply; check response headers for
X-RateLimit-Remaining. - Always confirm before creating, transitioning, or deleting issues.
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.
149flyio-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