Skip to main content

Fast CLI tools for Atlassian Cloud (Confluence + Jira) — optimized for AI agents

Project description

atlassian-cli

Fast CLI tools for Atlassian Cloud — built for AI agents, loved by humans.

CI PyPI Python License


Two CLI tools — confluence and jira — that talk directly to Atlassian Cloud REST APIs. Zero bloat, one dependency (requests), deterministic output that AI agents parse in a single shot.

Install

pip install atlassian-cli

Or from source:

pip install git+https://github.com/catapultcx/atlassian-cli.git

Setup

Create a .env file (or export environment variables):

ATLASSIAN_URL=https://your-site.atlassian.net
ATLASSIAN_EMAIL=you@example.com
ATLASSIAN_TOKEN=your-api-token

Get your API token at https://id.atlassian.com/manage-profile/security/api-tokens

Legacy CONFLUENCE_URL / CONFLUENCE_EMAIL / CONFLUENCE_TOKEN env vars are also supported.

Confluence CLI

Manages Confluence pages as local JSON files in ADF (Atlassian Document Format). No markdown — ADF preserves every macro, panel, and table perfectly.

# Download a page
confluence get 9268920323

# Upload local edits back
confluence put 9268920323
confluence put 9268920323 --force          # skip version check

# Compare local vs remote
confluence diff 9268920323

# Bulk-download an entire space (parallel, version-cached)
confluence sync POL
confluence sync COMPLY --workers 20 --force

# Search local page index (instant, no API call)
confluence search "risk assessment"

# Rebuild the page index
confluence index
confluence index --space POL --space COMPLY

How sync works

sync downloads every page in a space using parallel workers. It caches version numbers locally — subsequent syncs only fetch pages that changed. A full space of 500+ pages takes seconds.

pages/
  POL/
    9268920323.json          # ADF body
    9268920323.meta.json     # title, version, timestamps
  COMPLY/
    5227515611.json
    5227515611.meta.json
page-index.json              # searchable index

Comments

Read, reply to, and resolve inline and footer comments on pages.

# List all comments on a page
confluence comments 9268920323

# List only open/unresolved comments
confluence comments 9268920323 --open

# Reply to an inline comment
confluence comment 10226663432 "Fixed — updated the wording"

# Reply to a footer comment
confluence comment 10226663432 "Noted, will action" --footer

# Resolve an inline comment
confluence resolve 10226663432

# Reopen a resolved comment
confluence resolve 10226663432 --reopen

Jira CLI

Issues

Full CRUD on Jira issues via REST API v3.

# Get issue details
jira issue get ISMS-42

# Create issues
jira issue create PROJ Task "Fix the login bug"
jira issue create PROJ Story "User auth" --description "As a user..." --labels security urgent
jira issue create PROJ Sub-task "Write tests" --parent PROJ-100

# Update fields
jira issue update ISMS-42 --summary "New title"
jira issue update ISMS-42 --labels risk compliance
jira issue update ISMS-42 --fields '{"priority": {"name": "High"}}'

# Delete
jira issue delete ISMS-42

# Search with JQL
jira issue search "project = ISMS AND status = Open"
jira issue search "assignee = currentUser() ORDER BY updated DESC" --max 20

# Transitions
jira issue transition ISMS-42 "In Progress"
jira issue transition ISMS-42 Done

# Comments
jira issue comment ISMS-42 "Fixed in v2.1"
jira issue comments ISMS-42

Assets (JSM)

CRUD for Jira Service Management Assets via the Assets REST API v1.

# Browse schemas and types
jira assets schemas
jira assets schema 1
jira assets types 1
jira assets type 5
jira assets attrs 5

# Search with AQL
jira assets search "objectType = Server"

# CRUD objects
jira assets get 123
jira assets create 5 Name=srv01 IP=10.0.0.1
jira assets update 123 Name=srv02
jira assets delete 123

# Create new object types
jira assets type-create 1 "Network Device" --description "Switches and routers"

--json flag

Both CLIs accept a global --json flag that switches all output to machine-readable JSON. Perfect for piping into jq or parsing from code.

# Text mode (default)
$ confluence get 9268920323
OK Artificial Intelligence Policy (v12) -> pages/POL/9268920323.json

# JSON mode
$ confluence --json get 9268920323
{"status":"ok","message":"Artificial Intelligence Policy (v12) -> pages/POL/9268920323.json"}

Output format

All commands emit status-prefixed lines for easy parsing:

Prefix Meaning
OK Success
GET Page downloaded
SKIP Already up-to-date
ERR Error
DONE Batch complete

Architecture

src/atlassian_cli/
  config.py       Shared auth, .env parsing, session factory
  http.py         API helpers: get/post/put/delete + error handling
  output.py       Text & JSON output formatting
  confluence.py   Confluence CLI (v2 API, ADF)
  jira.py         Jira CLI entry point (subparsers)
  jira_issues.py  Jira issue commands (v3 API)
  jira_assets.py  Jira Assets commands (Assets v1 API)

APIs used:

  • Confluence Cloud REST API v2 (/wiki/api/v2/)
  • Jira Cloud REST API v3 (/rest/api/3/)
  • Jira Assets REST API v1 (api.atlassian.com/jsm/assets/workspace/{id}/v1)

Development

git clone https://github.com/catapultcx/atlassian-cli.git
cd atlassian-cli
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
ruff check src/ tests/

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atlassian_cli-0.5.9.tar.gz (35.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

atlassian_cli-0.5.9-py3-none-any.whl (26.4 kB view details)

Uploaded Python 3

File details

Details for the file atlassian_cli-0.5.9.tar.gz.

File metadata

  • Download URL: atlassian_cli-0.5.9.tar.gz
  • Upload date:
  • Size: 35.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for atlassian_cli-0.5.9.tar.gz
Algorithm Hash digest
SHA256 35e5962d19a28f0de15b3c19be9c63c5e738e2fe27c0b05ed4fb849a0d9224ed
MD5 34698fb1169c3b385c3621e9294e87df
BLAKE2b-256 ac87280e1e997a10a4e71db600e87f8f1d53a8636dd5902b5c51d416e4c63abe

See more details on using hashes here.

Provenance

The following attestation bundles were made for atlassian_cli-0.5.9.tar.gz:

Publisher: publish.yml on catapultcx/atlassian-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atlassian_cli-0.5.9-py3-none-any.whl.

File metadata

  • Download URL: atlassian_cli-0.5.9-py3-none-any.whl
  • Upload date:
  • Size: 26.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for atlassian_cli-0.5.9-py3-none-any.whl
Algorithm Hash digest
SHA256 efef98de11645ce856c388cc6c9afe0e3d3343800a4a7b8e4fcf48a401bea5db
MD5 678bdada5d49adeefcda60326a7a2b57
BLAKE2b-256 c7fa7a280a555a47b3f39a182607bea276d60899615594993582e447b26541bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for atlassian_cli-0.5.9-py3-none-any.whl:

Publisher: publish.yml on catapultcx/atlassian-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page