ax-check.com
by Gauge
A
Atlassian
atlassian.com
ax-check.com
Checked 5 October 2026
B
84/100
Agents need your login
Atlassian docs, pricing, and CLI setup are all agent-readable.
20 of 23 checklist items passed: docs index, install commands, MCP server, and pricing are all stated plainly without login walls.
2 fixes to start with
Concrete changes, backed by what we found.
Recorded coding sessions
Same task, 3 models, no atlassian.com account. Recorded 5 October 2026 on Pi.
3 recorded · 37s
37s · recorded
Session findings
Select a finding to see it in context.
›Thinking…
The user wants to build a simple example using Atlassian. I don't have access to credentials. Let me check the environment to see if there's anything available.
env | grep -iE "atlassian|jira|confluence|bitbucket" ; ls /sandbox/repo
(no output)
(no output)
Recorded tool call
{
"type": "tool_call",
"seq": 3,
"ts": "2026-10-05T15:43:35.230Z",
"name": "bash",
"turn": 1,
"input": {
"command": "env | grep -iE \"atlassian|jira|confluence|bitbucket\" ; ls /sandbox/repo"
},
"run_id": "cmuvf61dt00ag0itfbp58adjn",
"tool_id": "chatcmpl-tool-aa96e751f974a3b3",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 5,
"ts": "2026-10-05T15:43:35.230Z",
"turn": 1,
"output": {
"content": [
{
"text": "(no output)",
"type": "text"
}
]
},
"run_id": "cmuvf61dt00ag0itfbp58adjn",
"tool_id": "chatcmpl-tool-aa96e751f974a3b3",
"is_error": false,
"tool_kind": "shell"
}ls /usr/local/lib/node_modules/@earendil-works/pi-coding-agent/docs 2>/dev/null | head -40
compaction.md
compaction.md containerization.md custom-provider.md development.md docs.json environment-variables.md extensions.md images index.md json.md keybindings.md llama-cpp.md models.md packages.md prompt-templates.md providers.md quickstart.md rpc.md sdk.md security.md session-format.md sessions.md settings.md shell-aliases.md skills.md terminal-setup.md termux.md themes.md tmux.md tui.md usage.md windows.md
Recorded tool call
{
"type": "tool_call",
"seq": 4,
"ts": "2026-10-05T15:43:35.230Z",
"name": "bash",
"turn": 1,
"input": {
"command": "ls /usr/local/lib/node_modules/@earendil-works/pi-coding-agent/docs 2>/dev/null | head -40"
},
"run_id": "cmuvf61dt00ag0itfbp58adjn",
"tool_id": "chatcmpl-tool-9b9ece33824ef8da",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 6,
"ts": "2026-10-05T15:43:35.230Z",
"turn": 1,
"output": {
"content": [
{
"text": "compaction.md\ncontainerization.md\ncustom-provider.md\ndevelopment.md\ndocs.json\nenvironment-variables.md\nextensions.md\nimages\nindex.md\njson.md\nkeybindings.md\nllama-cpp.md\nmodels.md\npackages.md\nprompt-templates.md\nproviders.md\nquickstart.md\nrpc.md\nsdk.md\nsecurity.md\nsession-format.md\nsessions.md\nsettings.md\nshell-aliases.md\nskills.md\nterminal-setup.md\ntermux.md\nthemes.md\ntmux.md\ntui.md\nusage.md\nwindows.md\n",
"type": "text"
}
]
},
"run_id": "cmuvf61dt00ag0itfbp58adjn",
"tool_id": "chatcmpl-tool-9b9ece33824ef8da",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
The environment has no Atlassian credentials, and the repository is empty. Atlassian is a hosted product (Jira, Confluence), and has a REST API and SDK. Without credentials (API token, site domain), we cannot actually make calls. The user has requested to build a simple example — we can write a sample script that calls the Atlassian Jira REST API, but we can't execute it without authentication credentials. Is that a blocker? The user said, "Let me know if you get blocked." We can build a sample script and explain what credentials are needed. That's reasonable — no local stack, no long-running commands needed.
Pricing: Atlassian's pricing structure — Jira: Free plan (up to 10 users), Premium/Enterprise. Cloud pricing depends on the tier. Should explain concisely: free plan up to 10 users, Standard/Premium are paid per-user per-month, and API access is included in all plans (rate limits apply).
Manageability: Yes, easy — simple REST API, JSON responses, official SDKs available (atlassian-python-api, jira package, node's jira.js). Managing via API is easy, but some admin tasks are restricted.
Let me write a simple example: a Python script using Atlassian's REST API (Jira Cloud) that creates a ticket/issue and fetches an issue. Additionally, a health check might be nice too. Keep it light.
I checked the environment: the repo is empty and there are no Atlassian credentials configured (no ATLASSIAN_* / JIRA_* env vars). Atlassian (Jira/Confluence Cloud) does have a real developer workflow — plain REST APIs with official SDKs — so I can proceed. I'll build the example now; it just can't be executed end-to-end until you supply an API token + site URL.
File edits
1 file
Writtenatlassian_example.pyView changes
/sandbox/repo/atlassian_example.py
Written content · previous contents were not recorded
"""Simple Atlassian Jira Cloud example.Uses the official `atlassian-python-api` SDK against the hosted REST API.No local services required — just credentials.Setup:pip install atlassian-python-apiexport ATLASSIAN_SITE="your-domain.atlassian.net"export ATLASSIAN_EMAIL="you@example.com"export ATLASSIAN_API_TOKEN="..." # create at https://id.atlassian.com/manage-profile/security/api-tokensexport JIRA_PROJECT_KEY="DEMO" # an existing project keyRun:python atlassian_example.py"""import osimport sysfrom atlassian import Jiradef main() -> None:site = os.environ.get("ATLASSIAN_SITE")email = os.environ.get("ATLASSIAN_EMAIL")token = os.environ.get("ATLASSIAN_API_TOKEN")project = os.environ.get("JIRA_PROJECT_KEY", "DEMO")missing = [k for k, v in {"ATLASSIAN_SITE": site,"ATLASSIAN_EMAIL": email,"ATLASSIAN_API_TOKEN": token,}.items() if not v]if missing:sys.exit(f"Missing required env vars: {', '.join(missing)}")jira = Jira(url=f"https://{site}", username=email, password=token, cloud=True)# 1. Read: search recent issues in the project (JQL)print(f"-- Recent issues in {project} --")result = jira.jql(f"project = {project} ORDER BY created DESC",limit=5,fields=["summary", "status"],)for issue in result.get("issues", []):print(f" {issue['key']}: {issue['fields']['summary']} "f"[{issue['fields']['status']['name']}]")# 2. Write: create a tasknew_issue = jira.issue_create(fields={"project": {"key": project},"summary": "Created via Atlassian REST API example","description": "Hello from atlassian-python-api 👋","issuetype": {"name": "Task"},})key = new_issue["key"]print(f"\nCreated issue: https://{site}/browse/{key}")# 3. Update: add a comment, then transition if a 'Done' transition existsjira.issue_add_comment(key, "Automated comment from the example script.")transitions = jira.get_issue_transitions(key)done = next((t for t in transitions if t["name"].lower() == "done"), None)if done:jira.issue_transition(key, done["id"])print(f"Transitioned {key} -> Done")else:print(f"No 'Done' transition available for {key} "f"(available: {[t['name'] for t in transitions]})")if __name__ == "__main__":main()
Source: write · chatcmpl-tool-b3b8db6ca16b1f69
Recorded tool call
{
"type": "tool_call",
"seq": 10,
"ts": "2026-10-05T15:43:46.191Z",
"name": "write",
"turn": 1,
"input": {
"path": "/sandbox/repo/atlassian_example.py",
"content": "\"\"\"Simple Atlassian Jira Cloud example.\n\nUses the official `atlassian-python-api` SDK against the hosted REST API.\nNo local services required — just credentials.\n\nSetup:\n pip install atlassian-python-api\n export ATLASSIAN_SITE=\"your-domain.atlassian.net\"\n export ATLASSIAN_EMAIL=\"you@example.com\"\n export ATLASSIAN_API_TOKEN=\"...\" # create at https://id.atlassian.com/manage-profile/security/api-tokens\n export JIRA_PROJECT_KEY=\"DEMO\" # an existing project key\n\nRun:\n python atlassian_example.py\n\"\"\"\n\nimport os\nimport sys\n\nfrom atlassian import Jira\n\n\ndef main() -> None:\n site = os.environ.get(\"ATLASSIAN_SITE\")\n email = os.environ.get(\"ATLASSIAN_EMAIL\")\n token = os.environ.get(\"ATLASSIAN_API_TOKEN\")\n project = os.environ.get(\"JIRA_PROJECT_KEY\", \"DEMO\")\n\n missing = [k for k, v in {\n \"ATLASSIAN_SITE\": site,\n \"ATLASSIAN_EMAIL\": email,\n \"ATLASSIAN_API_TOKEN\": token,\n }.items() if not v]\n if missing:\n sys.exit(f\"Missing required env vars: {', '.join(missing)}\")\n\n jira = Jira(url=f\"https://{site}\", username=email, password=token, cloud=True)\n\n # 1. Read: search recent issues in the project (JQL)\n print(f\"-- Recent issues in {project} --\")\n result = jira.jql(\n f\"project = {project} ORDER BY created DESC\",\n limit=5,\n fields=[\"summary\", \"status\"],\n )\n for issue in result.get(\"issues\", []):\n print(f\" {issue['key']}: {issue['fields']['summary']} \"\n f\"[{issue['fields']['status']['name']}]\")\n\n # 2. Write: create a task\n new_issue = jira.issue_create(\n fields={\n \"project\": {\"key\": project},\n \"summary\": \"Created via Atlassian REST API example\",\n \"description\": \"Hello from atlassian-python-api 👋\",\n \"issuetype\": {\"name\": \"Task\"},\n }\n )\n key = new_issue[\"key\"]\n print(f\"\\nCreated issue: https://{site}/browse/{key}\")\n\n # 3. Update: add a comment, then transition if a 'Done' transition exists\n jira.issue_add_comment(key, \"Automated comment from the example script.\")\n transitions = jira.get_issue_transitions(key)\n done = next((t for t in transitions if t[\"name\"].lower() == \"done\"), None)\n if done:\n jira.issue_transition(key, done[\"id\"])\n print(f\"Transitioned {key} -> Done\")\n else:\n print(f\"No 'Done' transition available for {key} \"\n f\"(available: {[t['name'] for t in transitions]})\")\n\n\nif __name__ == \"__main__\":\n main()\n"
},
"run_id": "cmuvf61dt00ag0itfbp58adjn",
"tool_id": "chatcmpl-tool-b3b8db6ca16b1f69",
"tool_kind": "file_edit"
}Recorded tool result
{
"type": "tool_result",
"seq": 11,
"ts": "2026-10-05T15:43:46.191Z",
"turn": 1,
"output": {
"content": [
{
"text": "Successfully wrote 2494 bytes to /sandbox/repo/atlassian_example.py",
"type": "text"
}
]
},
"run_id": "cmuvf61dt00ag0itfbp58adjn",
"tool_id": "chatcmpl-tool-b3b8db6ca16b1f69",
"is_error": false,
"tool_kind": "file_edit"
}›Thinking…
Verify the syntax and install the SDK? Installing the SDK via pip is quick and fine (it's not a long-running service). Let's check whether Python is available, and do a syntax check + import check.
cd /sandbox/repo && python3 -m py_compile atlassian_example.py && echo "syntax OK" && pip install -q atlassian-python-api 2>&1 | tail -2; python3 -c "from atlassian import Jira; print('SDK import OK')"syntax OK
syntax OK SDK import OK
Recorded tool call
{
"type": "tool_call",
"seq": 14,
"ts": "2026-10-05T15:43:49.153Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /sandbox/repo && python3 -m py_compile atlassian_example.py && echo \"syntax OK\" && pip install -q atlassian-python-api 2>&1 | tail -2; python3 -c \"from atlassian import Jira; print('SDK import OK')\"",
"timeout": 120
},
"run_id": "cmuvf61dt00ag0itfbp58adjn",
"tool_id": "chatcmpl-tool-a308c3cd104c9845",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 16,
"ts": "2026-10-05T15:43:54.053Z",
"turn": 1,
"output": {
"content": [
{
"text": "syntax OK\nSDK import OK\n",
"type": "text"
}
]
},
"run_id": "cmuvf61dt00ag0itfbp58adjn",
"tool_id": "chatcmpl-tool-a308c3cd104c9845",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Everything's fine. The SDK is installed, and the script compiles. Can't run it without credentials. Okay, so let me answer about pricing and ease of administration, and note the blocker (no credentials).
Done. The example is at /sandbox/repo/atlassian_example.py — it uses the official atlassian-python-api SDK against Jira Cloud's hosted REST API (search via JQL → create an issue → comment → transition to Done). Syntax verified and the SDK installs/imports cleanly. No local services needed.
Blocked on one thing: there are no Atlassian credentials in this environment. To actually run it, set ATLASSIAN_SITE (e.g. yourco.atlassian.net), ATLASSIAN_EMAIL, ATLASSIAN_API_TOKEN (free to create at id.atlassian.com → Security → API tokens), and JIRA_PROJECT_KEY. Then python3 atlassian_example.py.
How pricing works (Jira Cloud, the product used here):
- Free tier: up to 10 users, includes full REST API access — enough for this example at $0.
- Standard: ~$8.15/user/month (billed monthly), 35k users cap.
- Premium: ~$16/user/month, adds advanced automation/insights, 99.9% uptime SLA.
- Enterprise: custom pricing for 10+ sites/large scale.
- API calls themselves aren't billed — they're rate-limited instead. (Confluence/Bitbucket follow the same per-user, free-tier-first model.)
Will it be easy for me to manage? Yes, largely:
- Clean, well-documented REST APIs with JSON in/out, plus official SDKs for Python, Node, and Go — very scriptable.
- Most day-to-day work (issues, projects, comments, transitions, Confluence pages) is fully API-driven.
- Caveats: user/site administration is split across a separate Admin API and the web console (some things like billing and certain org settings are GUI-only), and OAuth 2.0 apps require a bit of one-time setup — though basic-auth API tokens (used here) sidestep that entirely.
AX Fundamentals
23 checks. Open an area for details.
This check is a quick preview. Test more tasks and models with Gauge Agents.
Test your product with Gauge Agents