| name | api-operations |
| description | Use the Auto-Tundra HTTP API directly (via curl) for operations not exposed in the CLI, such as task updates, terminal management, GitLab/Linear queries, and Kanban board manipulation. |
| allowed_tools | ["Bash","Read"] |
| references | ["/Users/studio/rust-harness/crates/at-bridge/src/http_api.rs","/Users/studio/rust-harness/docs/PROJECT_HANDBOOK.md"] |
API Operations
Trigger
Use this skill when you need to interact with the Auto-Tundra daemon API directly — either because the CLI doesn't expose the operation, or you need fine-grained control.
Base URL
Default: http://localhost:9090
When to Use API vs CLI
Use CLI (at) when | Use API (curl) when |
|---|
| Creating/completing beads | Updating task fields (PATCH/PUT) |
| Running skill-aware tasks | Managing terminals |
| Doctor/status checks | Querying GitLab/Linear issues |
| Dry-run previews | Kanban column operations |
| WebSocket subscriptions |
Core Endpoints
Status & Health
curl -s http://localhost:9090/api/status | jq .
curl -s http://localhost:9090/api/kpi | jq .
curl -s http://localhost:9090/api/metrics/json | jq .
Beads (Tasks)
curl -s http://localhost:9090/api/beads | jq .
curl -s -X POST http://localhost:9090/api/beads \
-H 'Content-Type: application/json' \
-d '{"title":"Fix bug","lane":"Standard"}' | jq .
curl -s -X POST http://localhost:9090/api/beads/<UUID>/status \
-H 'Content-Type: application/json' \
-d '{"status":"Hooked"}' | jq .
Tasks (Detailed Work Items)
curl -s http://localhost:9090/api/tasks | jq .
curl -s -X POST http://localhost:9090/api/tasks \
-H 'Content-Type: application/json' \
-d '{
"title": "Review auth flow",
"bead_id": "<BEAD_UUID>",
"category": "QA",
"priority": "High",
"complexity": "Medium"
}' | jq .
curl -s -X PUT http://localhost:9090/api/tasks/<UUID> \
-H 'Content-Type: application/json' \
-d '{"priority":"Critical","description":"Updated scope"}' | jq .
curl -s -X POST http://localhost:9090/api/tasks/<UUID>/execute \
-H 'Content-Type: application/json' \
-d '{}' | jq .
Integrations
curl -s "http://localhost:9090/api/gitlab/issues?project_id=12345" | jq .
curl -s -X POST http://localhost:9090/api/gitlab/merge-requests/42/review \
-H 'Content-Type: application/json' | jq .
curl -s "http://localhost:9090/api/linear/issues?team_id=TEAM123" | jq .
Terminals
curl -s http://localhost:9090/api/terminals | jq .
curl -s -X POST http://localhost:9090/api/terminals \
-H 'Content-Type: application/json' \
-d '{"name":"agent-workspace"}' | jq .
Kanban
curl -s http://localhost:9090/api/kanban/columns | jq .
curl -s -X POST http://localhost:9090/api/kanban/ordering \
-H 'Content-Type: application/json' \
-d '{"column_id":"in_progress","task_ids":["<UUID1>","<UUID2>"]}' | jq .
Rules
- Always pipe through
jq . for readable output; use jq -r .field for extracting values.
- Always check HTTP status codes: 2xx = success, 4xx = client error, 5xx = server error.
- Missing credentials return
503 with {"error":"...","env_var":"GITLAB_TOKEN"} — check env vars.
- When creating resources, capture the returned UUID for subsequent operations.
- Prefer the CLI for bead lifecycle (sling/hook/done/nudge) — it handles error formatting better.