API Reference

This reference is drafted from the MCP tool set as a starting point. Confirm exact request and response shapes against the live API before building against it.

All requests are authenticated with your API key in the X-API-KEY header. Base URL: https://trackerboot.com/api/v1.

Projects

List projects

GET /projects

Returns the projects your API key can access.

{
  "projects": [
    { "id": "proj_123", "name": "Mobile App" }
  ]
}

List project members

GET /projects/{projectId}/members

{
  "members": [
    { "id": "user_123", "name": "Jamie Lee", "email": "jamie@example.com" }
  ]
}

Get the current iteration

GET /projects/{projectId}/iterations/current

Returns the active iteration, including its stories and cycle time details.

{
  "iteration": {
    "id": "iter_1",
    "startDate": "2026-07-14",
    "endDate": "2026-07-27",
    "stories": [
      {
        "id": "story_1",
        "title": "Add password reset flow",
        "status": "in_progress",
        "cycleTime": { "startedAt": "2026-07-15T09:00:00Z" }
      }
    ]
  }
}

Stories

Search stories

GET /projects/{projectId}/stories

Query paramTypeRequiredDescription
querystringNoFree-text search across title and description
labelsstring[]NoFilter by one or more labels
statusstringNoFilter by status: to_do, in_progress, done
{
  "stories": [
    { "id": "story_1", "title": "Add password reset flow", "status": "in_progress" }
  ]
}

Get a story

GET /stories/{storyId}

{
  "id": "story_1",
  "title": "Add password reset flow",
  "description": "Let users reset their password from the login screen.",
  "status": "in_progress",
  "estimate": 3,
  "owners": ["user_123"],
  "labels": ["auth"]
}

Create a story

POST /projects/{projectId}/stories

FieldTypeRequiredDescription
titlestringYesStory title
descriptionstringNoStory description
storyTypestringNofeature, bug, or chore

Returns the created story, in the same shape as Get a story.

Update a story

PATCH /stories/{storyId}

Send only the fields you want to change:

FieldTypeDescription
titlestringNew title
descriptionstringNew description
statusstringto_do, in_progress, or done
estimatenumberEffort estimate

Returns the updated story.

Manage story owners

PATCH /stories/{storyId}/owners

FieldTypeDescription
addOwnerIdsstring[]User IDs to add as owners
removeOwnerIdsstring[]User IDs to remove as owners

Returns the updated story, including its current owners list.

Manage story labels

POST /stories/{storyId}/labels adds a label. DELETE /stories/{storyId}/labels/{label} removes one.

FieldTypeDescription
labelstringLabel name (request body for the POST request)
{ "id": "label_1", "name": "auth", "count": 4 }

Tasks

List tasks

GET /stories/{storyId}/tasks

{
  "tasks": [
    { "id": "task_1", "title": "Write migration", "finished": false }
  ]
}

Create a task

POST /stories/{storyId}/tasks

FieldTypeRequired
titlestringYes

Batch create tasks

POST /stories/{storyId}/tasks/batch

FieldTypeRequiredDescription
titlesstring[]YesOne task is created per title

Update a task

PATCH /stories/{storyId}/tasks/{taskId}

FieldTypeRequiredDescription
finishedbooleanYesMarks the task done or not done
titlestringNoNew title

Comments

List comments

GET /stories/{storyId}/comments

{
  "comments": [
    { "id": "comment_1", "content": "Looks good, shipping this." }
  ]
}

Create a comment

POST /stories/{storyId}/comments

FieldTypeRequired
contentstringYes

Errors

Errors use standard HTTP status codes: 401 for a missing or invalid API key, 403 for a key without access to the requested project, 404 for a resource that doesn’t exist, and 422 for a malformed request body.

{
  "error": {
    "code": "invalid_api_key",
    "message": "The provided API key is invalid or has been revoked."
  }
}