KosmoKrator

productivity

Fellow Lua API for KosmoKrator Agents

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

Lua Namespace

Agents call this integration through app.integrations.fellow.*. Use lua_read_doc("integrations.fellow") 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 Fellow workflow without starting an interactive agent session.

Inline Lua call
kosmo integrations:lua --eval 'dump(app.integrations.fellow.get_current_user({}))' --json
Read Lua docs headlessly
kosmo integrations:lua --eval 'print(docs.read("fellow"))' --json
kosmo integrations:lua --eval 'print(docs.read("fellow.get_current_user"))' --json

Workflow file

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

workflow.lua
local fellow = app.integrations.fellow
local result = fellow.get_current_user({})

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.fellow, app.mcp.*, docs.*, json.*, and regex.*. Use app.integrations.fellow.default.* or app.integrations.fellow.work.* when you configured named credential accounts.

MCP-only Lua

If the script only needs configured MCP servers and does not need Fellow, 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.

Fellow Lua API Reference

Namespace: app.integrations.fellow

Fellow tools use the official Developer API at https://{subdomain}.fellow.app/api/v1. The integration sends credentials in the X-API-KEY header automatically.

User

local me = app.integrations.fellow.get_current_user({})

Returns the authenticated user and workspace context.

Notes

local notes = app.integrations.fellow.list_notes({
  pagination = { page_size = 25 },
  include = { transcript = true },
  filters = { updated_at_start = "2026-05-01" }
})

local note = app.integrations.fellow.get_note({
  note_id = "note_123"
})

delete_note exists for privileged API keys only:

app.integrations.fellow.delete_note({ note_id = "note_123" })

Action Items

local items = app.integrations.fellow.list_action_items({
  order_by = "due_date",
  filters = { scope = "assigned_to_me" }
})

local item = app.integrations.fellow.get_action_item({
  action_item_id = "action_123"
})

app.integrations.fellow.mark_action_item_complete({
  action_item_id = "action_123",
  completed = true
})

app.integrations.fellow.archive_action_item({
  action_item_id = "action_123"
})

Supported scope filter values in Fellow docs include assigned_to_me and assigned_to_others.

Recordings

local recordings = app.integrations.fellow.list_recordings({
  pagination = { page_size = 10 },
  media_url = { expires_in = 3600 }
})

local recording = app.integrations.fellow.get_recording({
  recording_id = "rec_123"
})

delete_recording requires privileged API access.

Webhooks

local hooks = app.integrations.fellow.list_webhooks({
  page_size = 20
})

local hook = app.integrations.fellow.create_webhook({
  url = "https://example.test/webhooks/fellow",
  enabled_events = {
    "ai_note.shared_to_channel",
    "ai_note.generated",
    "action_item.assigned",
    "action_item.completed"
  },
  description = "Agent workflow webhook",
  status = "active"
})

app.integrations.fellow.update_webhook({
  webhook_id = "webhook_123",
  status = "inactive"
})

app.integrations.fellow.delete_webhook({
  webhook_id = "webhook_123"
})

Generic API

Use generic tools only for documented endpoints that do not yet have a first-class tool. Paths must be relative.

local data = app.integrations.fellow.api_get({
  path = "/me"
})

app.integrations.fellow.api_post({
  path = "/action_items",
  payload = {
    filters = { scope = "assigned_to_me" }
  }
})

Absolute URLs are rejected.

Multi-Account Usage

app.integrations.fellow.get_current_user({})
app.integrations.fellow.default.get_current_user({})
app.integrations.fellow.leadership.list_notes({
  pagination = { page_size = 10 }
})
Raw agent markdown
# Fellow Lua API Reference

Namespace: `app.integrations.fellow`

Fellow tools use the official Developer API at `https://{subdomain}.fellow.app/api/v1`. The integration sends credentials in the `X-API-KEY` header automatically.

## User

```lua
local me = app.integrations.fellow.get_current_user({})
```

Returns the authenticated user and workspace context.

## Notes

```lua
local notes = app.integrations.fellow.list_notes({
  pagination = { page_size = 25 },
  include = { transcript = true },
  filters = { updated_at_start = "2026-05-01" }
})

local note = app.integrations.fellow.get_note({
  note_id = "note_123"
})
```

`delete_note` exists for privileged API keys only:

```lua
app.integrations.fellow.delete_note({ note_id = "note_123" })
```

## Action Items

```lua
local items = app.integrations.fellow.list_action_items({
  order_by = "due_date",
  filters = { scope = "assigned_to_me" }
})

local item = app.integrations.fellow.get_action_item({
  action_item_id = "action_123"
})

app.integrations.fellow.mark_action_item_complete({
  action_item_id = "action_123",
  completed = true
})

app.integrations.fellow.archive_action_item({
  action_item_id = "action_123"
})
```

Supported `scope` filter values in Fellow docs include `assigned_to_me` and `assigned_to_others`.

## Recordings

```lua
local recordings = app.integrations.fellow.list_recordings({
  pagination = { page_size = 10 },
  media_url = { expires_in = 3600 }
})

local recording = app.integrations.fellow.get_recording({
  recording_id = "rec_123"
})
```

`delete_recording` requires privileged API access.

## Webhooks

```lua
local hooks = app.integrations.fellow.list_webhooks({
  page_size = 20
})

local hook = app.integrations.fellow.create_webhook({
  url = "https://example.test/webhooks/fellow",
  enabled_events = {
    "ai_note.shared_to_channel",
    "ai_note.generated",
    "action_item.assigned",
    "action_item.completed"
  },
  description = "Agent workflow webhook",
  status = "active"
})

app.integrations.fellow.update_webhook({
  webhook_id = "webhook_123",
  status = "inactive"
})

app.integrations.fellow.delete_webhook({
  webhook_id = "webhook_123"
})
```

## Generic API

Use generic tools only for documented endpoints that do not yet have a first-class tool. Paths must be relative.

```lua
local data = app.integrations.fellow.api_get({
  path = "/me"
})

app.integrations.fellow.api_post({
  path = "/action_items",
  payload = {
    filters = { scope = "assigned_to_me" }
  }
})
```

Absolute URLs are rejected.

## Multi-Account Usage

```lua
app.integrations.fellow.get_current_user({})
app.integrations.fellow.default.get_current_user({})
app.integrations.fellow.leadership.list_notes({
  pagination = { page_size = 10 }
})
```
Metadata-derived Lua example
local result = app.integrations.fellow.get_current_user({})
print(result)

Functions

get_current_user Read

Get the profile of the currently authenticated Fellow user. Returns name, email, and account details.

Lua path
app.integrations.fellow.get_current_user
Full name
fellow.fellow_get_current_user
ParameterTypeRequiredDescription
No parameters.
list_notes Read

List Fellow notes with optional filters, includes, and pagination.

Lua path
app.integrations.fellow.list_notes
Full name
fellow.fellow_list_notes
ParameterTypeRequiredDescription
payload object no Raw Fellow list body with pagination, include, and filters.
pagination object no Pagination object.
include object no Optional expensive fields to include.
filters object no Note filters.
get_note Read

Retrieve a Fellow note by ID.

Lua path
app.integrations.fellow.get_note
Full name
fellow.fellow_get_note
ParameterTypeRequiredDescription
note_id string yes Fellow note ID.
delete_note Write

Delete a Fellow note by ID. This endpoint requires a privileged Fellow API key.

Lua path
app.integrations.fellow.delete_note
Full name
fellow.fellow_delete_note
ParameterTypeRequiredDescription
note_id string yes Fellow note ID.
list_action_items Read

List action items from Fellow. Supports cursor-based pagination and optional status filtering. Returns action item titles, assignees, due dates, and completion status.

Lua path
app.integrations.fellow.list_action_items
Full name
fellow.fellow_list_action_items
ParameterTypeRequiredDescription
payload object no Raw Fellow list body with pagination, include, order_by, and filters.
pagination object no Pagination object.
include string no Optional include field.
order_by string no Order by created_at_desc, created_at_asc, or due_date.
filters object no Action item filters, including scope.
get_action_item Read

Retrieve a Fellow action item by ID.

Lua path
app.integrations.fellow.get_action_item
Full name
fellow.fellow_get_action_item
ParameterTypeRequiredDescription
action_item_id string yes Fellow action item ID.
mark_action_item_complete Write

Mark a Fellow action item complete or incomplete.

Lua path
app.integrations.fellow.mark_action_item_complete
Full name
fellow.fellow_mark_action_item_complete
ParameterTypeRequiredDescription
action_item_id string yes Fellow action item ID.
completed boolean yes Whether the action item should be complete.
archive_action_item Write

Archive a Fellow action item by marking it as won't do.

Lua path
app.integrations.fellow.archive_action_item
Full name
fellow.fellow_archive_action_item
ParameterTypeRequiredDescription
action_item_id string yes Fellow action item ID.
list_recordings Read

List Fellow recordings with optional filters, includes, pagination, and media URL settings.

Lua path
app.integrations.fellow.list_recordings
Full name
fellow.fellow_list_recordings
ParameterTypeRequiredDescription
payload object no Raw Fellow list body with pagination, include, filters, and media_url.
pagination object no Pagination object.
include object no Optional expensive fields to include.
filters object no Recording filters.
media_url object no Media URL expiration configuration.
get_recording Read

Retrieve a Fellow recording by ID.

Lua path
app.integrations.fellow.get_recording
Full name
fellow.fellow_get_recording
ParameterTypeRequiredDescription
recording_id string yes Fellow recording ID.
delete_recording Write

Delete a Fellow recording by ID. This endpoint requires a privileged Fellow API key.

Lua path
app.integrations.fellow.delete_recording
Full name
fellow.fellow_delete_recording
ParameterTypeRequiredDescription
recording_id string yes Fellow recording ID.
list_webhooks Read

List Fellow webhooks with optional page size, cursor, and JSON-encoded filters.

Lua path
app.integrations.fellow.list_webhooks
Full name
fellow.fellow_list_webhooks
ParameterTypeRequiredDescription
page_size integer no Number of results per page.
cursor string no Pagination cursor.
filters string,object no Webhook filters as JSON string or object.
create_webhook Write

Create a Fellow webhook endpoint for supported event types.

Lua path
app.integrations.fellow.create_webhook
Full name
fellow.fellow_create_webhook
ParameterTypeRequiredDescription
url string yes Webhook destination URL.
enabled_events array yes Event types to subscribe to.
description string no Optional webhook description.
status string no Webhook status.
get_webhook Read

Retrieve a Fellow webhook by ID.

Lua path
app.integrations.fellow.get_webhook
Full name
fellow.fellow_get_webhook
ParameterTypeRequiredDescription
webhook_id string yes Fellow webhook ID.
update_webhook Write

Update a Fellow webhook endpoint with partial fields.

Lua path
app.integrations.fellow.update_webhook
Full name
fellow.fellow_update_webhook
ParameterTypeRequiredDescription
webhook_id string yes Fellow webhook ID.
payload object no Raw webhook update body.
url string no Webhook destination URL.
enabled_events array no Event types to subscribe to.
description string no Webhook description.
status string no Webhook status.
delete_webhook Write

Delete a Fellow webhook endpoint by ID.

Lua path
app.integrations.fellow.delete_webhook
Full name
fellow.fellow_delete_webhook
ParameterTypeRequiredDescription
webhook_id string yes Fellow webhook ID.
api_get Read

Call a relative Fellow API GET path for documented endpoints without a first-class tool.

Lua path
app.integrations.fellow.api_get
Full name
fellow.fellow_api_get
ParameterTypeRequiredDescription
path string yes Relative path such as /me. Absolute URLs are rejected.
params object no Query parameters.
api_post Write

Call a relative Fellow API POST path for documented endpoints without a first-class tool.

Lua path
app.integrations.fellow.api_post
Full name
fellow.fellow_api_post
ParameterTypeRequiredDescription
path string yes Relative path such as /notes. Absolute URLs are rejected.
payload object no JSON request body.
api_patch Write

Call a relative Fellow API PATCH path for documented endpoints without a first-class tool.

Lua path
app.integrations.fellow.api_patch
Full name
fellow.fellow_api_patch
ParameterTypeRequiredDescription
path string yes Relative path such as /webhook/{id}. Absolute URLs are rejected.
payload object no JSON request body.
api_delete Write

Call a relative Fellow API DELETE path for documented endpoints without a first-class tool.

Lua path
app.integrations.fellow.api_delete
Full name
fellow.fellow_api_delete
ParameterTypeRequiredDescription
path string yes Relative path such as /webhook/{id}. Absolute URLs are rejected.
payload object no Optional JSON request body.