Skip to content

Common tasks

The everyday operations, each shown three ways. Pick a tab once and every example on the site follows it.

  • CLI: the command to type.
  • MCP: the tool call an agent makes when you ask it in words.
  • SDK: the call on a client, tracker = TrackerClient(oauth_token="…", organization_id="…") (and wiki, forms likewise).

Every example here is generated from the test that runs it on all three surfaces.

Find issues

ycli tracker issues list --queue DE --status open --assignee alice
{
  "name": "tracker_issues_list",
  "arguments": {
    "queue": "DE",
    "status": "open",
    "assignee": "alice"
  }
}
tracker.issues.search({"filter": {"queue": "DE", "status": "open", "assignee": "alice"}}, limit=500)

The CLI and the tool take the common filters as options; for anything else pass a query in Tracker's own language: ycli tracker issues search 'Queue: DE AND Status: open'.

Read an issue

ycli tracker issues get DE-7
{
  "name": "tracker_issues_get",
  "arguments": {
    "key": "DE-7"
  }
}
tracker.issues.get("DE-7")

Create an issue

ycli tracker issues create --queue DE --summary New --type bug --tag ui
{
  "name": "tracker_issues_create",
  "arguments": {
    "body": {
      "queue": "DE",
      "summary": "New",
      "type": {
        "key": "bug"
      },
      "tags": [
        "ui"
      ]
    }
  }
}
tracker.issues.create({"queue": "DE", "summary": "New", "type": {"key": "bug"}, "tags": ["ui"]})

Change an issue

ycli tracker issues update DE-7 --summary Renamed --priority critical
{
  "name": "tracker_issues_update",
  "arguments": {
    "key": "DE-7",
    "body": {
      "summary": "Renamed",
      "priority": {
        "key": "critical"
      }
    }
  }
}
tracker.issues.update("DE-7", {"summary": "Renamed", "priority": {"key": "critical"}})

Comment on an issue

ycli tracker comments add DE-14 --text 'Готово ✅'
{
  "name": "tracker_comments_add",
  "arguments": {
    "key": "DE-14",
    "body": {
      "text": "Готово ✅"
    }
  }
}
tracker.comments.add("DE-14", {"text": "Готово ✅"})

Move an issue along its workflow

An issue moves by a transition, and each status offers its own. List them first:

ycli tracker transitions list DE-51
{
  "name": "tracker_transitions_list",
  "arguments": {
    "key": "DE-51"
  }
}
tracker.transitions.list("DE-51")

Then run one by its id:

ycli tracker transitions execute DE-52 close --field comment=done --field resolution=fixed -F storyPoints=3
{
  "name": "tracker_transitions_execute",
  "arguments": {
    "key": "DE-52",
    "transition_id": "close",
    "body": {
      "comment": "done",
      "resolution": "fixed",
      "storyPoints": 3
    }
  }
}
tracker.transitions.execute("DE-52", "close", {"comment": "done", "resolution": "fixed", "storyPoints": 3})

Log time

ycli tracker worklog create DE-66 --duration PT2H --start 2021-03-04T10:00:00.000+0300 --comment pairing
{
  "name": "tracker_worklog_create",
  "arguments": {
    "key": "DE-66",
    "body": {
      "duration": "PT2H",
      "start": "2021-03-04T10:00:00.000+0300",
      "comment": "pairing"
    }
  }
}
tracker.worklog.create("DE-66", {"duration": "PT2H", "start": "2021-03-04T10:00:00.000+0300", "comment": "pairing"})

Create a Wiki page

ycli wiki pages create --slug eng/new --title 'New page' --content '# New'
{
  "name": "wiki_pages_create",
  "arguments": {
    "slug": "eng/new",
    "title": "New page",
    "content": "# New"
  }
}
wiki.pages.create({"slug": "eng/new", "title": "New page", "content": "# New"})

Read a form

ycli forms surveys get 686d0a1b2c3d4e5f00000001
{
  "name": "forms_surveys_get",
  "arguments": {
    "survey_id": "686d0a1b2c3d4e5f00000001"
  }
}
forms.surveys.get("686d0a1b2c3d4e5f00000001")

Every other operation is in the reference: CLI, MCP tools, SDK.