KosmoKrator

productivity

Taiga Lua API for KosmoKrator Agents

Agent-facing Lua documentation and function reference for the Taiga KosmoKrator integration.

Lua Namespace

Agents call this integration through app.integrations.taiga.*. Use lua_read_doc("integrations.taiga") inside KosmoKrator to discover the same reference at runtime.

Call Lua from the Headless CLI

Use kosmo integrations:lua when a shell script, CI job, cron job, or another coding CLI should run a deterministic Taiga workflow without starting an interactive agent session.

Inline Lua call
kosmo integrations:lua --eval 'dump(app.integrations.taiga.list_projects({membership = "example_membership", slug = "example_slug", order_by = "example_order_by", page = 1, page_size = 1}))' --json
Read Lua docs headlessly
kosmo integrations:lua --eval 'print(docs.read("taiga"))' --json
kosmo integrations:lua --eval 'print(docs.read("taiga.list_projects"))' --json

Workflow file

Put repeatable logic in a Lua file, then execute it with JSON output for the calling process.

workflow.lua
local taiga = app.integrations.taiga
local result = taiga.list_projects({membership = "example_membership", slug = "example_slug", order_by = "example_order_by", page = 1, page_size = 1})

dump(result)
Run the workflow
kosmo integrations:lua workflow.lua --json
kosmo integrations:lua workflow.lua --force --json
Namespace note. integrations:lua exposes app.integrations.taiga, app.mcp.*, docs.*, json.*, and regex.*. Use app.integrations.taiga.default.* or app.integrations.taiga.work.* when you configured named credential accounts.

MCP-only Lua

If the script only needs configured MCP servers and does not need Taiga, use the narrower mcp:lua command.

MCP Lua command
# Use mcp:lua for MCP-only scripts; use integrations:lua for this integration namespace.
kosmo mcp:lua --eval 'dump(mcp.servers())' --json

Agent-Facing Lua Docs

This is the rendered version of the full Lua documentation exposed to agents when they inspect the integration namespace.

Taiga — Lua API Reference

list_projects

List all Taiga projects you have access to.

Parameters

NameTypeRequiredDescription
membershipstringnoFilter by membership: "admin", "project_owner", "member"
slugstringnoFilter by project slug
order_bystringnoOrder results (e.g., "name", "-created_date")
pageintegernoPage number for pagination (default: 1)
page_sizeintegernoResults per page (default: 40)

Example

local result = app.integrations.taiga.list_projects({})

for _, project in ipairs(result) do
  print(project.name .. " (slug: " .. project.slug .. ")")
end

get_project

Get detailed information about a specific Taiga project.

Parameters

NameTypeRequiredDescription
idintegeryesThe Taiga project ID

Example

local result = app.integrations.taiga.get_project({ id = 1 })
print("Project: " .. result.name)
print("Description: " .. (result.description or "N/A"))

list_user_stories

List user stories, optionally filtered by project, status, milestone, or assignee.

Parameters

NameTypeRequiredDescription
projectintegernoFilter by project ID
project__slugstringnoFilter by project slug
statusstringnoFilter by status name (e.g., "New", "In progress", "Done")
milestoneintegernoFilter by milestone (sprint) ID
assigned_tointegernoFilter by assigned user ID
tagsstringnoFilter by tags (comma-separated)
order_bystringnoOrder results (e.g., "subject", "-created_date")
pageintegernoPage number for pagination
page_sizeintegernoResults per page

Example

-- List all stories in a project
local result = app.integrations.taiga.list_user_stories({
  project = 1,
  page_size = 20
})

for _, story in ipairs(result) do
  print(story.subject .. " — " .. (story.status_extra_info and story.status_extra_info.name or "unknown status"))
end
-- Filter by status
local result = app.integrations.taiga.list_user_stories({
  project = 1,
  status = "In progress"
})

get_user_story

Get detailed information about a specific user story.

Parameters

NameTypeRequiredDescription
idintegeryesThe Taiga user story ID

Example

local result = app.integrations.taiga.get_user_story({ id = 42 })
print("Subject: " .. result.subject)
print("Description: " .. (result.description or "N/A"))

create_user_story

Create a new user story in a Taiga project.

Parameters

NameTypeRequiredDescription
projectintegeryesProject ID
subjectstringyesUser story title
descriptionstringnoDescription (supports Markdown)
statusintegernoStatus ID
assigned_tointegernoUser ID to assign
milestoneintegernoMilestone (sprint) ID
tagsarraynoArray of tag strings
pointsobjectnoStory points (role ID → point value)

Example

local result = app.integrations.taiga.create_user_story({
  project = 1,
  subject = "As a user, I want to export reports",
  description = "Users should be able to export reports as PDF.",
  tags = { "feature", "reports" }
})

print("Created story #" .. result.id .. ": " .. result.subject)

list_issues

List issues, optionally filtered by project, status, priority, or severity.

Parameters

NameTypeRequiredDescription
projectintegernoFilter by project ID
project__slugstringnoFilter by project slug
statusstringnoFilter by status name
prioritystringnoFilter by priority ("Low", "Normal", "High", "Critical")
severitystringnoFilter by severity ("Wishlist", "Minor", "Normal", "Important", "Critical")
assigned_tointegernoFilter by assigned user ID
tagsstringnoFilter by tags (comma-separated)
order_bystringnoOrder results
pageintegernoPage number for pagination
page_sizeintegernoResults per page

Example

-- List open issues for a project
local result = app.integrations.taiga.list_issues({
  project = 1,
  status = "New"
})

for _, issue in ipairs(result) do
  print(issue.subject .. " — Priority: " .. (issue.priority_extra_info and issue.priority_extra_info.name or "N/A"))
end
-- List critical issues
local result = app.integrations.taiga.list_issues({
  project = 1,
  priority = "Critical"
})

get_current_user

Get the authenticated Taiga user profile.

Parameters

None.

Example

local result = app.integrations.taiga.get_current_user({})
print("Logged in as: " .. result.full_name .. " (" .. result.username .. ")")

Multi-Account Usage

If you have multiple Taiga accounts configured, use account-specific namespaces:

-- Default account (always works)
app.integrations.taiga.list_projects({})

-- Explicit default (portable across setups)
app.integrations.taiga.default.list_projects({})

-- Named accounts
app.integrations.taiga.work.list_projects({})
app.integrations.taiga.personal.list_projects({})

All functions are identical across accounts — only the credentials differ.

Raw agent markdown
# Taiga — Lua API Reference

## list_projects

List all Taiga projects you have access to.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `membership` | string | no | Filter by membership: `"admin"`, `"project_owner"`, `"member"` |
| `slug` | string | no | Filter by project slug |
| `order_by` | string | no | Order results (e.g., `"name"`, `"-created_date"`) |
| `page` | integer | no | Page number for pagination (default: 1) |
| `page_size` | integer | no | Results per page (default: 40) |

### Example

```lua
local result = app.integrations.taiga.list_projects({})

for _, project in ipairs(result) do
  print(project.name .. " (slug: " .. project.slug .. ")")
end
```

---

## get_project

Get detailed information about a specific Taiga project.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | integer | yes | The Taiga project ID |

### Example

```lua
local result = app.integrations.taiga.get_project({ id = 1 })
print("Project: " .. result.name)
print("Description: " .. (result.description or "N/A"))
```

---

## list_user_stories

List user stories, optionally filtered by project, status, milestone, or assignee.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `project` | integer | no | Filter by project ID |
| `project__slug` | string | no | Filter by project slug |
| `status` | string | no | Filter by status name (e.g., `"New"`, `"In progress"`, `"Done"`) |
| `milestone` | integer | no | Filter by milestone (sprint) ID |
| `assigned_to` | integer | no | Filter by assigned user ID |
| `tags` | string | no | Filter by tags (comma-separated) |
| `order_by` | string | no | Order results (e.g., `"subject"`, `"-created_date"`) |
| `page` | integer | no | Page number for pagination |
| `page_size` | integer | no | Results per page |

### Example

```lua
-- List all stories in a project
local result = app.integrations.taiga.list_user_stories({
  project = 1,
  page_size = 20
})

for _, story in ipairs(result) do
  print(story.subject .. " — " .. (story.status_extra_info and story.status_extra_info.name or "unknown status"))
end
```

```lua
-- Filter by status
local result = app.integrations.taiga.list_user_stories({
  project = 1,
  status = "In progress"
})
```

---

## get_user_story

Get detailed information about a specific user story.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | integer | yes | The Taiga user story ID |

### Example

```lua
local result = app.integrations.taiga.get_user_story({ id = 42 })
print("Subject: " .. result.subject)
print("Description: " .. (result.description or "N/A"))
```

---

## create_user_story

Create a new user story in a Taiga project.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `project` | integer | yes | Project ID |
| `subject` | string | yes | User story title |
| `description` | string | no | Description (supports Markdown) |
| `status` | integer | no | Status ID |
| `assigned_to` | integer | no | User ID to assign |
| `milestone` | integer | no | Milestone (sprint) ID |
| `tags` | array | no | Array of tag strings |
| `points` | object | no | Story points (role ID → point value) |

### Example

```lua
local result = app.integrations.taiga.create_user_story({
  project = 1,
  subject = "As a user, I want to export reports",
  description = "Users should be able to export reports as PDF.",
  tags = { "feature", "reports" }
})

print("Created story #" .. result.id .. ": " .. result.subject)
```

---

## list_issues

List issues, optionally filtered by project, status, priority, or severity.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `project` | integer | no | Filter by project ID |
| `project__slug` | string | no | Filter by project slug |
| `status` | string | no | Filter by status name |
| `priority` | string | no | Filter by priority (`"Low"`, `"Normal"`, `"High"`, `"Critical"`) |
| `severity` | string | no | Filter by severity (`"Wishlist"`, `"Minor"`, `"Normal"`, `"Important"`, `"Critical"`) |
| `assigned_to` | integer | no | Filter by assigned user ID |
| `tags` | string | no | Filter by tags (comma-separated) |
| `order_by` | string | no | Order results |
| `page` | integer | no | Page number for pagination |
| `page_size` | integer | no | Results per page |

### Example

```lua
-- List open issues for a project
local result = app.integrations.taiga.list_issues({
  project = 1,
  status = "New"
})

for _, issue in ipairs(result) do
  print(issue.subject .. " — Priority: " .. (issue.priority_extra_info and issue.priority_extra_info.name or "N/A"))
end
```

```lua
-- List critical issues
local result = app.integrations.taiga.list_issues({
  project = 1,
  priority = "Critical"
})
```

---

## get_current_user

Get the authenticated Taiga user profile.

### Parameters

None.

### Example

```lua
local result = app.integrations.taiga.get_current_user({})
print("Logged in as: " .. result.full_name .. " (" .. result.username .. ")")
```

---

## Multi-Account Usage

If you have multiple Taiga accounts configured, use account-specific namespaces:

```lua
-- Default account (always works)
app.integrations.taiga.list_projects({})

-- Explicit default (portable across setups)
app.integrations.taiga.default.list_projects({})

-- Named accounts
app.integrations.taiga.work.list_projects({})
app.integrations.taiga.personal.list_projects({})
```

All functions are identical across accounts — only the credentials differ.
Metadata-derived Lua example
local result = app.integrations.taiga.list_projects({membership = "example_membership", slug = "example_slug", order_by = "example_order_by", page = 1, page_size = 1})
print(result)

Functions

list_projects Read

List all Taiga projects you have access to. Returns project names, slugs, and descriptions that you can use to query user stories and issues.

Lua path
app.integrations.taiga.list_projects
Full name
taiga.taiga_list_projects
ParameterTypeRequiredDescription
membership string no Filter by membership: "admin", "project_owner", "member".
slug string no Filter by project slug.
order_by string no Order results by a field (e.g. "name", "-created_date").
page integer no Page number for pagination (default: 1).
page_size integer no Number of results per page (default: 40).
get_project Read

Get detailed information about a specific Taiga project by its ID. Returns project name, slug, description, statuses, and membership details.

Lua path
app.integrations.taiga.get_project
Full name
taiga.taiga_get_project
ParameterTypeRequiredDescription
id integer yes The Taiga project ID.
list_user_stories Read

List user stories from Taiga. Filter by project, status, milestone, or assignee. Returns story subjects, descriptions, and statuses.

Lua path
app.integrations.taiga.list_user_stories
Full name
taiga.taiga_list_user_stories
ParameterTypeRequiredDescription
project integer no Filter by project ID.
project__slug string no Filter by project slug (e.g., "my-project").
status string no Filter by status name (e.g., "New", "In progress", "Ready for test", "Done").
milestone integer no Filter by milestone (sprint) ID.
assigned_to integer no Filter by assigned user ID.
tags string no Filter by tags as a comma-separated string.
order_by string no Order results (e.g., "subject", "-created_date", "backlog_order").
page integer no Page number for pagination (default: 1).
page_size integer no Number of results per page (default: 40).
get_user_story Read

Get detailed information about a specific Taiga user story by its ID. Returns the full story with subject, description, status, assignee, and points.

Lua path
app.integrations.taiga.get_user_story
Full name
taiga.taiga_get_user_story
ParameterTypeRequiredDescription
id integer yes The Taiga user story ID.
create_user_story Write

Create a new user story in a Taiga project. Requires project ID and subject. Optionally include description, tags, status, and assignee.

Lua path
app.integrations.taiga.create_user_story
Full name
taiga.taiga_create_user_story
ParameterTypeRequiredDescription
project integer yes The Taiga project ID to create the story in.
subject string yes The user story title / subject line.
description string no Detailed description of the user story. Supports Markdown formatting.
status integer no Status ID for the user story. Omit to use the default status.
assigned_to integer no User ID to assign the story to.
milestone integer no Milestone (sprint) ID to associate with.
tags array no Array of tag strings to apply (e.g., ["frontend", "bug"]).
points object no Story points as a mapping of role ID to point value (e.g., {"1": 3}).
list_issues Read

List issues from Taiga. Filter by project, status, priority, severity, or assignee. Returns issue subjects, descriptions, and statuses.

Lua path
app.integrations.taiga.list_issues
Full name
taiga.taiga_list_issues
ParameterTypeRequiredDescription
project integer no Filter by project ID.
project__slug string no Filter by project slug (e.g., "my-project").
status string no Filter by status name (e.g., "New", "In progress", "Ready for test", "Closed").
priority string no Filter by priority name (e.g., "Low", "Normal", "High", "Critical").
severity string no Filter by severity name (e.g., "Wishlist", "Minor", "Normal", "Important", "Critical").
assigned_to integer no Filter by assigned user ID.
tags string no Filter by tags as a comma-separated string.
order_by string no Order results (e.g., "subject", "-created_date", "severity").
page integer no Page number for pagination (default: 1).
page_size integer no Number of results per page (default: 40).
get_current_user Read

Get the currently authenticated Taiga user profile. Returns user details like full name, username, and email.

Lua path
app.integrations.taiga.get_current_user
Full name
taiga.taiga_get_current_user
ParameterTypeRequiredDescription
No parameters.