KosmoKrator

other

Meilisearch Lua API for KosmoKrator Agents

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

7 functions 5 read 2 write API key auth

Lua Namespace

Agents call this integration through app.integrations.meilisearch.*. Use lua_read_doc("integrations.meilisearch") 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.

Meilisearch — Lua API Reference

list_indexes

List all indexes in the Meilisearch instance.

Parameters

NameTypeRequiredDescription
limitintegernoMaximum number of indexes to return (default: 20)
offsetintegernoNumber of indexes to skip for pagination

Examples

local result = app.integrations.meilisearch.list_indexes({})

for _, index in ipairs(result.results) do
  print(index.uid .. " (primary key: " .. (index.primaryKey or "none") .. ")")
end

get_index

Get detailed information about a specific Meilisearch index.

Parameters

NameTypeRequiredDescription
uidstringyesThe index unique identifier (e.g., "movies")

Examples

local result = app.integrations.meilisearch.get_index({
  uid = "movies"
})

print("Index: " .. result.uid)
print("Primary key: " .. (result.primaryKey or "not set"))

create_index

Create a new index in Meilisearch. Returns a task object that can be used to track the creation progress.

Parameters

NameTypeRequiredDescription
uidstringyesThe unique identifier for the new index
primary_keystringnoThe primary key field (e.g., "id")

Examples

local result = app.integrations.meilisearch.create_index({
  uid = "products",
  primary_key = "product_id"
})

print("Task UID: " .. result.taskUid)
print("Status: " .. result.status)

search_documents

Search for documents in a Meilisearch index. Supports full-text search with filters, sorting, and pagination.

Parameters

NameTypeRequiredDescription
index_uidstringyesThe index unique identifier to search in
qstringnoThe search query string. Use "" to return all documents
limitintegernoMaximum number of documents to return (default: 20)
offsetintegernoNumber of documents to skip for pagination
filterstringnoFilter expression as a JSON string, e.g., '[["genre = Comedy"]]'
sortarraynoSort criteria, e.g., {"price:asc"}. Requires a sortable attribute

Filter Syntax

Filters are JSON strings containing filter expressions:

[["field = value"]]
[["field > 10"]]
[["field IN [\"a\", \"b\"]"]]

Sort Syntax

An array of attribute-direction pairs:

sort = {"price:asc", "name:desc"}

Examples

-- Basic search
local result = app.integrations.meilisearch.search_documents({
  index_uid = "movies",
  q = "avengers",
  limit = 10
})

for _, hit in ipairs(result.hits) do
  print(hit.title .. " (" .. hit.year .. ")")
end
-- Search with filter
local result = app.integrations.meilisearch.search_documents({
  index_uid = "movies",
  q = "action",
  filter = '[["genre = Action"]]',
  sort = {"rating:desc"},
  limit = 5
})

for _, hit in ipairs(result.hits) do
  print(hit.title .. " — rating: " .. hit.rating)
end
-- Return all documents with pagination
local result = app.integrations.meilisearch.search_documents({
  index_uid = "movies",
  q = "",
  limit = 50,
  offset = 0
})

print("Total: " .. result.estimatedTotalHits .. " documents")

add_documents

Add or replace documents in a Meilisearch index. Returns a task object to track indexing progress.

Parameters

NameTypeRequiredDescription
index_uidstringyesThe index unique identifier
documentsarrayyesAn array of document objects to add
primary_keystringnoThe primary key field name (only needed if not set on the index)

Examples

local result = app.integrations.meilisearch.add_documents({
  index_uid = "movies",
  documents = {
    { id = 1, title = "Inception", year = 2010, genre = "Sci-Fi" },
    { id = 2, title = "The Dark Knight", year = 2008, genre = "Action" }
  }
})

print("Task UID: " .. result.taskUid)
print("Status: " .. result.status)

get_document

Retrieve a single document from an index by its primary key value.

Parameters

NameTypeRequiredDescription
index_uidstringyesThe index unique identifier
doc_idstringyesThe document primary key value

Examples

local result = app.integrations.meilisearch.get_document({
  index_uid = "movies",
  doc_id = "1"
})

print(result.title .. " (" .. result.year .. ")")

get_health

Check the health status of the Meilisearch instance.

Parameters

This tool takes no parameters.

Examples

local result = app.integrations.meilisearch.get_health({})

print("Status: " .. result.status)
-- Expected: { status = "available" }

Multi-Account Usage

If you have multiple Meilisearch instances configured, use account-specific namespaces:

-- Default account (always works)
app.integrations.meilisearch.function_name({...})

-- Explicit default (portable across setups)
app.integrations.meilisearch.default.function_name({...})

-- Named accounts
app.integrations.meilisearch.production.function_name({...})
app.integrations.meilisearch.staging.function_name({...})

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

Raw agent markdown
# Meilisearch — Lua API Reference

## list_indexes

List all indexes in the Meilisearch instance.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `limit` | integer | no | Maximum number of indexes to return (default: 20) |
| `offset` | integer | no | Number of indexes to skip for pagination |

### Examples

```lua
local result = app.integrations.meilisearch.list_indexes({})

for _, index in ipairs(result.results) do
  print(index.uid .. " (primary key: " .. (index.primaryKey or "none") .. ")")
end
```

---

## get_index

Get detailed information about a specific Meilisearch index.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `uid` | string | yes | The index unique identifier (e.g., `"movies"`) |

### Examples

```lua
local result = app.integrations.meilisearch.get_index({
  uid = "movies"
})

print("Index: " .. result.uid)
print("Primary key: " .. (result.primaryKey or "not set"))
```

---

## create_index

Create a new index in Meilisearch. Returns a task object that can be used to track the creation progress.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `uid` | string | yes | The unique identifier for the new index |
| `primary_key` | string | no | The primary key field (e.g., `"id"`) |

### Examples

```lua
local result = app.integrations.meilisearch.create_index({
  uid = "products",
  primary_key = "product_id"
})

print("Task UID: " .. result.taskUid)
print("Status: " .. result.status)
```

---

## search_documents

Search for documents in a Meilisearch index. Supports full-text search with filters, sorting, and pagination.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `index_uid` | string | yes | The index unique identifier to search in |
| `q` | string | no | The search query string. Use `""` to return all documents |
| `limit` | integer | no | Maximum number of documents to return (default: 20) |
| `offset` | integer | no | Number of documents to skip for pagination |
| `filter` | string | no | Filter expression as a JSON string, e.g., `'[["genre = Comedy"]]'` |
| `sort` | array | no | Sort criteria, e.g., `{"price:asc"}`. Requires a sortable attribute |

### Filter Syntax

Filters are JSON strings containing filter expressions:

```
[["field = value"]]
[["field > 10"]]
[["field IN [\"a\", \"b\"]"]]
```

### Sort Syntax

An array of attribute-direction pairs:

```lua
sort = {"price:asc", "name:desc"}
```

### Examples

```lua
-- Basic search
local result = app.integrations.meilisearch.search_documents({
  index_uid = "movies",
  q = "avengers",
  limit = 10
})

for _, hit in ipairs(result.hits) do
  print(hit.title .. " (" .. hit.year .. ")")
end
```

```lua
-- Search with filter
local result = app.integrations.meilisearch.search_documents({
  index_uid = "movies",
  q = "action",
  filter = '[["genre = Action"]]',
  sort = {"rating:desc"},
  limit = 5
})

for _, hit in ipairs(result.hits) do
  print(hit.title .. " — rating: " .. hit.rating)
end
```

```lua
-- Return all documents with pagination
local result = app.integrations.meilisearch.search_documents({
  index_uid = "movies",
  q = "",
  limit = 50,
  offset = 0
})

print("Total: " .. result.estimatedTotalHits .. " documents")
```

---

## add_documents

Add or replace documents in a Meilisearch index. Returns a task object to track indexing progress.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `index_uid` | string | yes | The index unique identifier |
| `documents` | array | yes | An array of document objects to add |
| `primary_key` | string | no | The primary key field name (only needed if not set on the index) |

### Examples

```lua
local result = app.integrations.meilisearch.add_documents({
  index_uid = "movies",
  documents = {
    { id = 1, title = "Inception", year = 2010, genre = "Sci-Fi" },
    { id = 2, title = "The Dark Knight", year = 2008, genre = "Action" }
  }
})

print("Task UID: " .. result.taskUid)
print("Status: " .. result.status)
```

---

## get_document

Retrieve a single document from an index by its primary key value.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `index_uid` | string | yes | The index unique identifier |
| `doc_id` | string | yes | The document primary key value |

### Examples

```lua
local result = app.integrations.meilisearch.get_document({
  index_uid = "movies",
  doc_id = "1"
})

print(result.title .. " (" .. result.year .. ")")
```

---

## get_health

Check the health status of the Meilisearch instance.

### Parameters

This tool takes no parameters.

### Examples

```lua
local result = app.integrations.meilisearch.get_health({})

print("Status: " .. result.status)
-- Expected: { status = "available" }
```

---

## Multi-Account Usage

If you have multiple Meilisearch instances configured, use account-specific namespaces:

```lua
-- Default account (always works)
app.integrations.meilisearch.function_name({...})

-- Explicit default (portable across setups)
app.integrations.meilisearch.default.function_name({...})

-- Named accounts
app.integrations.meilisearch.production.function_name({...})
app.integrations.meilisearch.staging.function_name({...})
```

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

Metadata-Derived Lua Example

local result = app.integrations.meilisearch.meilisearch_list_indexes({
  limit = 1,
  offset = 1
})
print(result)

Functions

meilisearch_list_indexes

List all indexes in the Meilisearch instance. Returns index UIDs, primary keys, and creation dates.

Operation
Read read
Full name
meilisearch.meilisearch_list_indexes
ParameterTypeRequiredDescription
limit integer no Maximum number of indexes to return (default: 20).
offset integer no Number of indexes to skip for pagination.

meilisearch_get_index

Get detailed information about a specific Meilisearch index, including its UID, primary key, and stats.

Operation
Read read
Full name
meilisearch.meilisearch_get_index
ParameterTypeRequiredDescription
uid string yes The index unique identifier (e.g., "movies").

meilisearch_create_index

Create a new index in Meilisearch. Returns a task object that can be used to track the creation progress.

Operation
Write write
Full name
meilisearch.meilisearch_create_index
ParameterTypeRequiredDescription
uid string yes The unique identifier for the new index (e.g., "movies").
primary_key string no The primary key field for the index (e.g., "id"). Optional — can be set later.

meilisearch_search_documents

Search for documents in a Meilisearch index. Supports full-text search with filters, sorting, and pagination.

Operation
Read read
Full name
meilisearch.meilisearch_search_documents
ParameterTypeRequiredDescription
index_uid string yes The index unique identifier to search in (e.g., "movies").
q string no The search query string. Use empty string "" to return all documents.
limit integer no Maximum number of documents to return (default: 20).
offset integer no Number of documents to skip for pagination.
filter string no Filter expression as a JSON string, e.g., '[["genre = Comedy"]]'.
sort array no Sort criteria as an array of strings, e.g., ["price:asc"]. Requires a sortable attribute.

meilisearch_add_documents

Add or replace documents in a Meilisearch index. Sends an array of document objects to be indexed. Returns a task object to track progress.

Operation
Write write
Full name
meilisearch.meilisearch_add_documents
ParameterTypeRequiredDescription
index_uid string yes The index unique identifier (e.g., "movies").
documents array yes An array of document objects to add. Each document must contain the primary key field.
primary_key string no The primary key field name (e.g., "id"). Only needed if not already set on the index.

meilisearch_get_document

Retrieve a single document from a Meilisearch index by its primary key value.

Operation
Read read
Full name
meilisearch.meilisearch_get_document
ParameterTypeRequiredDescription
index_uid string yes The index unique identifier (e.g., "movies").
doc_id string yes The document primary key value to retrieve.

meilisearch_get_health

Check the health status of the Meilisearch instance. Returns whether the server is available and operational.

Operation
Read read
Full name
meilisearch.meilisearch_get_health
ParameterTypeRequiredDescription
No parameters.