KosmoKrator

other

Appwrite Lua API for KosmoKrator Agents

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

7 functions 6 read 1 write API key auth

Lua Namespace

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

Agent-Facing Lua Docs

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

Appwrite — Lua API Reference

list_databases

List all databases in the Appwrite project.

Parameters

NameTypeRequiredDescription
limitintegernoMaximum number of databases to return (default: 25)
offsetintegernoOffset for pagination (default: 0)
searchstringnoSearch term to filter databases by name

Example

local result = app.integrations.appwrite.list_databases({
  limit = 50
})

for _, db in ipairs(result.databases) do
  print(db["$id"] .. ": " .. db.name)
end

get_database

Get details of a specific database.

Parameters

NameTypeRequiredDescription
idstringyesThe database ID

Example

local result = app.integrations.appwrite.get_database({
  id = "my_database_id"
})

print("Database: " .. result.name)

list_collections

List all collections in a database.

Parameters

NameTypeRequiredDescription
database_idstringyesThe database ID
limitintegernoMaximum number of collections to return (default: 25)
offsetintegernoOffset for pagination (default: 0)

Example

local result = app.integrations.appwrite.list_collections({
  database_id = "my_database_id",
  limit = 50
})

for _, col in ipairs(result.collections) do
  print(col["$id"] .. ": " .. col.name)
end

list_documents

List documents in a collection.

Parameters

NameTypeRequiredDescription
database_idstringyesThe database ID
collection_idstringyesThe collection ID
limitintegernoMaximum number of documents to return (default: 25)
offsetintegernoOffset for pagination (default: 0)

Example

local result = app.integrations.appwrite.list_documents({
  database_id = "my_database_id",
  collection_id = "my_collection_id",
  limit = 10
})

for _, doc in ipairs(result.documents) do
  print(doc["$id"] .. ": " .. (doc.name or "unnamed"))
end

get_document

Get a single document by its ID.

Parameters

NameTypeRequiredDescription
database_idstringyesThe database ID
collection_idstringyesThe collection ID
doc_idstringyesThe document ID

Example

local result = app.integrations.appwrite.get_document({
  database_id = "my_database_id",
  collection_id = "my_collection_id",
  doc_id = "my_document_id"
})

print("Document: " .. result["$id"])
for key, value in pairs(result) do
  print("  " .. key .. " = " .. tostring(value))
end

create_document

Create a new document in a collection.

Parameters

NameTypeRequiredDescription
database_idstringyesThe database ID
collection_idstringyesThe collection ID
document_idstringyesUnique ID for the document (use "unique()" to auto-generate)
dataobjectyesDocument data as key-value pairs matching collection attributes

Example

local result = app.integrations.appwrite.create_document({
  database_id = "my_database_id",
  collection_id = "my_collection_id",
  document_id = "unique()",
  data = {
    title = "My Document",
    content = "Hello, world!",
    status = "active"
  }
})

print("Created document: " .. result["$id"])

get_current_user

Get the currently authenticated Appwrite user account.

Parameters

None.

Example

local result = app.integrations.appwrite.get_current_user({})

print("User: " .. result.name)
print("Email: " .. result.email)

Multi-Account Usage

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

-- Default account (always works)
app.integrations.appwrite.list_databases({...})

-- Explicit default (portable across setups)
app.integrations.appwrite.default.list_databases({...})

-- Named accounts
app.integrations.appwrite.production.list_databases({...})
app.integrations.appwrite.staging.list_databases({...})

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

Raw agent markdown
# Appwrite — Lua API Reference

## list_databases

List all databases in the Appwrite project.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `limit` | integer | no | Maximum number of databases to return (default: 25) |
| `offset` | integer | no | Offset for pagination (default: 0) |
| `search` | string | no | Search term to filter databases by name |

### Example

```lua
local result = app.integrations.appwrite.list_databases({
  limit = 50
})

for _, db in ipairs(result.databases) do
  print(db["$id"] .. ": " .. db.name)
end
```

---

## get_database

Get details of a specific database.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | string | yes | The database ID |

### Example

```lua
local result = app.integrations.appwrite.get_database({
  id = "my_database_id"
})

print("Database: " .. result.name)
```

---

## list_collections

List all collections in a database.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `database_id` | string | yes | The database ID |
| `limit` | integer | no | Maximum number of collections to return (default: 25) |
| `offset` | integer | no | Offset for pagination (default: 0) |

### Example

```lua
local result = app.integrations.appwrite.list_collections({
  database_id = "my_database_id",
  limit = 50
})

for _, col in ipairs(result.collections) do
  print(col["$id"] .. ": " .. col.name)
end
```

---

## list_documents

List documents in a collection.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `database_id` | string | yes | The database ID |
| `collection_id` | string | yes | The collection ID |
| `limit` | integer | no | Maximum number of documents to return (default: 25) |
| `offset` | integer | no | Offset for pagination (default: 0) |

### Example

```lua
local result = app.integrations.appwrite.list_documents({
  database_id = "my_database_id",
  collection_id = "my_collection_id",
  limit = 10
})

for _, doc in ipairs(result.documents) do
  print(doc["$id"] .. ": " .. (doc.name or "unnamed"))
end
```

---

## get_document

Get a single document by its ID.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `database_id` | string | yes | The database ID |
| `collection_id` | string | yes | The collection ID |
| `doc_id` | string | yes | The document ID |

### Example

```lua
local result = app.integrations.appwrite.get_document({
  database_id = "my_database_id",
  collection_id = "my_collection_id",
  doc_id = "my_document_id"
})

print("Document: " .. result["$id"])
for key, value in pairs(result) do
  print("  " .. key .. " = " .. tostring(value))
end
```

---

## create_document

Create a new document in a collection.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `database_id` | string | yes | The database ID |
| `collection_id` | string | yes | The collection ID |
| `document_id` | string | yes | Unique ID for the document (use `"unique()"` to auto-generate) |
| `data` | object | yes | Document data as key-value pairs matching collection attributes |

### Example

```lua
local result = app.integrations.appwrite.create_document({
  database_id = "my_database_id",
  collection_id = "my_collection_id",
  document_id = "unique()",
  data = {
    title = "My Document",
    content = "Hello, world!",
    status = "active"
  }
})

print("Created document: " .. result["$id"])
```

---

## get_current_user

Get the currently authenticated Appwrite user account.

### Parameters

None.

### Example

```lua
local result = app.integrations.appwrite.get_current_user({})

print("User: " .. result.name)
print("Email: " .. result.email)
```

---

## Multi-Account Usage

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

```lua
-- Default account (always works)
app.integrations.appwrite.list_databases({...})

-- Explicit default (portable across setups)
app.integrations.appwrite.default.list_databases({...})

-- Named accounts
app.integrations.appwrite.production.list_databases({...})
app.integrations.appwrite.staging.list_databases({...})
```

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

Metadata-Derived Lua Example

local result = app.integrations.appwrite.appwrite_list_databases({
  limit = 1,
  offset = 1,
  search = "example_search"
})
print(result)

Functions

appwrite_list_databases

List all databases in the Appwrite project. Returns database IDs and names.

Operation
Read read
Full name
appwrite.appwrite_list_databases
ParameterTypeRequiredDescription
limit integer no Maximum number of databases to return (default: 25).
offset integer no Offset for pagination (default: 0).
search string no Search term to filter databases by name.

appwrite_get_database

Get details of a specific Appwrite database by its ID.

Operation
Read read
Full name
appwrite.appwrite_get_database
ParameterTypeRequiredDescription
id string yes The database ID.

appwrite_list_collections

List all collections in an Appwrite database. Returns collection IDs and names.

Operation
Read read
Full name
appwrite.appwrite_list_collections
ParameterTypeRequiredDescription
database_id string yes The database ID to list collections from.
limit integer no Maximum number of collections to return (default: 25).
offset integer no Offset for pagination (default: 0).

appwrite_list_documents

List documents in an Appwrite collection. Returns document data and metadata.

Operation
Read read
Full name
appwrite.appwrite_list_documents
ParameterTypeRequiredDescription
database_id string yes The database ID.
collection_id string yes The collection ID.
limit integer no Maximum number of documents to return (default: 25).
offset integer no Offset for pagination (default: 0).

appwrite_get_document

Get a single document from an Appwrite collection by its ID.

Operation
Read read
Full name
appwrite.appwrite_get_document
ParameterTypeRequiredDescription
database_id string yes The database ID.
collection_id string yes The collection ID.
doc_id string yes The document ID.

appwrite_create_document

Create a new document in an Appwrite collection.

Operation
Write write
Full name
appwrite.appwrite_create_document
ParameterTypeRequiredDescription
database_id string yes The database ID.
collection_id string yes The collection ID.
document_id string yes A unique ID for the document (use "unique()" to auto-generate).
data object yes The document data as key-value pairs matching the collection attributes.

appwrite_get_current_user

Get the currently authenticated Appwrite user account information.

Operation
Read read
Full name
appwrite.appwrite_get_current_user
ParameterTypeRequiredDescription
No parameters.