KosmoKrator

ai

Google Gemini Lua API for KosmoKrator Agents

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

7 functions 6 read 1 write API key auth

Lua Namespace

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

Google Gemini — Lua API Reference

list_models

List available Gemini AI models.

Parameters

NameTypeRequiredDescription
pageSizeintegernoMax models per page (default: 50, max: 100)
pageTokenstringnoToken from a previous response for pagination

Example

local result = app.integrations["google-gemini"].list_models({
  pageSize = 10
})

for _, model in ipairs(result.models) do
  print(model.name .. " — " .. model.displayName)
end

get_model

Get detailed information about a specific Gemini model.

Parameters

NameTypeRequiredDescription
idstringyesModel resource name, e.g. "models/gemini-2.0-flash"

Example

local result = app.integrations["google-gemini"].get_model({
  id = "models/gemini-2.0-flash"
})

print("Model: " .. result.displayName)
print("Input token limit: " .. result.inputTokenLimit)
print("Output token limit: " .. result.outputTokenLimit)

generate_content

Generate content using a Gemini model.

Parameters

NameTypeRequiredDescription
idstringyesModel resource name, e.g. "models/gemini-2.0-flash"
contentsarrayyesArray of content messages with role and parts
temperaturenumbernoRandomness control (0.0–2.0)
topPnumbernoNucleus sampling (0.0–1.0)
maxOutputTokensintegernoMax tokens in the response

Content Format

The contents array contains message objects:

{
  { role = "user", parts = { { text = "Your prompt here" } } }
}

For multi-turn conversations:

{
  { role = "user", parts = { { text = "Hello!" } } },
  { role = "model", parts = { { text = "Hi there!" } } },
  { role = "user", parts = { { text = "Tell me more." } } }
}

Example

local result = app.integrations["google-gemini"].generate_content({
  id = "models/gemini-2.0-flash",
  contents = {
    { role = "user", parts = { { text = "Write a haiku about programming." } } }
  },
  temperature = 0.7,
  maxOutputTokens = 100
})

for _, candidate in ipairs(result.candidates) do
  for _, part in ipairs(candidate.content.parts) do
    print(part.text)
  end
end

list_files

List files uploaded to the Gemini File API.

Parameters

NameTypeRequiredDescription
pageSizeintegernoMax files per page (default: 50, max: 100)
pageTokenstringnoToken from a previous response for pagination

Example

local result = app.integrations["google-gemini"].list_files({
  pageSize = 10
})

for _, file in ipairs(result.files) do
  print(file.name .. " — " .. file.mimeType .. " (" .. file.sizeBytes .. " bytes)")
end

get_file

Get metadata for an uploaded file.

Parameters

NameTypeRequiredDescription
idstringyesFile resource name, e.g. "files/abc123"

Example

local result = app.integrations["google-gemini"].get_file({
  id = "files/abc123"
})

print("File: " .. result.displayName)
print("MIME: " .. result.mimeType)
print("State: " .. result.state)

list_tuned_models

List tuned (fine-tuned) Gemini models.

Parameters

NameTypeRequiredDescription
pageSizeintegernoMax models per page (default: 50, max: 100)
pageTokenstringnoToken from a previous response for pagination

Example

local result = app.integrations["google-gemini"].list_tuned_models({
  pageSize = 10
})

for _, model in ipairs(result.tunedModels) do
  print(model.name .. " — base: " .. (model.baseModel or "unknown"))
end

get_current_user

Get information about the currently authenticated user.

Parameters

None.

Example

local result = app.integrations["google-gemini"].get_current_user({})

print("User: " .. (result.name or "unknown"))

Multi-Account Usage

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

-- Default account (always works)
app.integrations["google-gemini"].function_name({...})

-- Explicit default (portable across setups)
app.integrations["google-gemini"].default.function_name({...})

-- Named accounts
app.integrations["google-gemini"].work.function_name({...})
app.integrations["google-gemini"].personal.function_name({...})

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

Raw agent markdown
# Google Gemini — Lua API Reference

## list_models

List available Gemini AI models.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `pageSize` | integer | no | Max models per page (default: 50, max: 100) |
| `pageToken` | string | no | Token from a previous response for pagination |

### Example

```lua
local result = app.integrations["google-gemini"].list_models({
  pageSize = 10
})

for _, model in ipairs(result.models) do
  print(model.name .. " — " .. model.displayName)
end
```

---

## get_model

Get detailed information about a specific Gemini model.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | string | yes | Model resource name, e.g. `"models/gemini-2.0-flash"` |

### Example

```lua
local result = app.integrations["google-gemini"].get_model({
  id = "models/gemini-2.0-flash"
})

print("Model: " .. result.displayName)
print("Input token limit: " .. result.inputTokenLimit)
print("Output token limit: " .. result.outputTokenLimit)
```

---

## generate_content

Generate content using a Gemini model.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | string | yes | Model resource name, e.g. `"models/gemini-2.0-flash"` |
| `contents` | array | yes | Array of content messages with `role` and `parts` |
| `temperature` | number | no | Randomness control (0.0–2.0) |
| `topP` | number | no | Nucleus sampling (0.0–1.0) |
| `maxOutputTokens` | integer | no | Max tokens in the response |

### Content Format

The `contents` array contains message objects:

```lua
{
  { role = "user", parts = { { text = "Your prompt here" } } }
}
```

For multi-turn conversations:

```lua
{
  { role = "user", parts = { { text = "Hello!" } } },
  { role = "model", parts = { { text = "Hi there!" } } },
  { role = "user", parts = { { text = "Tell me more." } } }
}
```

### Example

```lua
local result = app.integrations["google-gemini"].generate_content({
  id = "models/gemini-2.0-flash",
  contents = {
    { role = "user", parts = { { text = "Write a haiku about programming." } } }
  },
  temperature = 0.7,
  maxOutputTokens = 100
})

for _, candidate in ipairs(result.candidates) do
  for _, part in ipairs(candidate.content.parts) do
    print(part.text)
  end
end
```

---

## list_files

List files uploaded to the Gemini File API.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `pageSize` | integer | no | Max files per page (default: 50, max: 100) |
| `pageToken` | string | no | Token from a previous response for pagination |

### Example

```lua
local result = app.integrations["google-gemini"].list_files({
  pageSize = 10
})

for _, file in ipairs(result.files) do
  print(file.name .. " — " .. file.mimeType .. " (" .. file.sizeBytes .. " bytes)")
end
```

---

## get_file

Get metadata for an uploaded file.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | string | yes | File resource name, e.g. `"files/abc123"` |

### Example

```lua
local result = app.integrations["google-gemini"].get_file({
  id = "files/abc123"
})

print("File: " .. result.displayName)
print("MIME: " .. result.mimeType)
print("State: " .. result.state)
```

---

## list_tuned_models

List tuned (fine-tuned) Gemini models.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `pageSize` | integer | no | Max models per page (default: 50, max: 100) |
| `pageToken` | string | no | Token from a previous response for pagination |

### Example

```lua
local result = app.integrations["google-gemini"].list_tuned_models({
  pageSize = 10
})

for _, model in ipairs(result.tunedModels) do
  print(model.name .. " — base: " .. (model.baseModel or "unknown"))
end
```

---

## get_current_user

Get information about the currently authenticated user.

### Parameters

None.

### Example

```lua
local result = app.integrations["google-gemini"].get_current_user({})

print("User: " .. (result.name or "unknown"))
```

---

## Multi-Account Usage

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

```lua
-- Default account (always works)
app.integrations["google-gemini"].function_name({...})

-- Explicit default (portable across setups)
app.integrations["google-gemini"].default.function_name({...})

-- Named accounts
app.integrations["google-gemini"].work.function_name({...})
app.integrations["google-gemini"].personal.function_name({...})
```

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

Metadata-Derived Lua Example

local result = app.integrations.google_gemini.gemini_list_models({
  pageSize = 1,
  pageToken = "example_pageToken"
})
print(result)

Functions

gemini_list_models

List available Gemini AI models. Returns model names, display names, supported generation methods, and other metadata.

Operation
Read read
Full name
google-gemini.gemini_list_models
ParameterTypeRequiredDescription
pageSize integer no Maximum number of models to return per page (default: 50, max: 100).
pageToken string no Token from a previous response to fetch the next page of results.

gemini_get_model

Get detailed information about a specific Gemini model, including supported generation methods, input/output token limits, and capabilities.

Operation
Read read
Full name
google-gemini.gemini_get_model
ParameterTypeRequiredDescription
id string yes The model resource name (e.g., "models/gemini-2.0-flash" or "models/gemini-pro").

gemini_generate_content

Generate content using a Gemini model. Send text prompts and receive AI-generated responses. Supports configurable generation parameters like temperature, topP, and maxOutputTokens.

Operation
Write write
Full name
google-gemini.gemini_generate_content
ParameterTypeRequiredDescription
id string yes The model resource name (e.g., "models/gemini-2.0-flash" or "models/gemini-pro").
contents array yes Array of content parts. Each entry should have a "role" ("user" or "model") and "parts" array with objects like {"text": "Your prompt here"}.
temperature number no Controls randomness in generation (0.0–2.0). Lower values are more deterministic, higher values more creative.
topP number no Nucleus sampling parameter (0.0–1.0). Limits cumulative probability of tokens considered.
maxOutputTokens integer no Maximum number of tokens to generate in the response.

gemini_list_files

List files uploaded to the Gemini File API. Returns file names, MIME types, sizes, and states.

Operation
Read read
Full name
google-gemini.gemini_list_files
ParameterTypeRequiredDescription
pageSize integer no Maximum number of files to return per page (default: 50, max: 100).
pageToken string no Token from a previous response to fetch the next page of results.

gemini_get_file

Get metadata for an uploaded file in the Gemini File API, including its name, display name, MIME type, size, and processing state.

Operation
Read read
Full name
google-gemini.gemini_get_file
ParameterTypeRequiredDescription
id string yes The file resource name (e.g., "files/abc123").

gemini_list_tuned_models

List tuned (fine-tuned) Gemini models in your project. Returns model names, base models, tuning tasks, and display names.

Operation
Read read
Full name
google-gemini.gemini_list_tuned_models
ParameterTypeRequiredDescription
pageSize integer no Maximum number of tuned models to return per page (default: 50, max: 100).
pageToken string no Token from a previous response to fetch the next page of results.

gemini_get_current_user

Get information about the currently authenticated Google user, including permissions and account details.

Operation
Read read
Full name
google-gemini.gemini_get_current_user
ParameterTypeRequiredDescription
No parameters.