Skip to main content
Setup steps and authentication are in the Overview. This page focuses on the agent resource itself.
An agent is the AI voice assistant under test. It links to a provider (Vapi, Retell, ElevenLabs, LiveKit, Pipecat, or a custom integration), a system prompt, mock tools, a knowledge base, and a set of personalities. Most evaluation workflows start by creating or selecting an agent.

Create

cekura agents create \
  --project-id 742 \
  --name "Support Bot" \
  --description "Inbound customer support agent" \
  --provider vapi \
  --vapi-assistant-id asst_abc123
For complex configs, write a JSON file and pass it:
cekura agents create --from-file agent.json

List, get, update

# List agents in a project
cekura agents list --project-id 742

# Inspect one
cekura agents get 123

# Patch fields inline
cekura agents update 123 --json '{"description": "v2 prompt rolled out"}'

# Or from a file
cekura agents update 123 --from-file patch.json

Mock tools

Mock tools let evaluations run without hitting your real backend.
# List existing tools
cekura agents tools-list 123

# Add a tool
cekura agents tool-create 123 --from-file booking_tool.json

# Update / remove
cekura agents tool-update 123 book_appointment --from-file new.json
cekura agents tool-destroy 123 book_appointment

Knowledge base

cekura agents upload-knowledge-base 123 --file ./policies.pdf
cekura agents get-knowledge-base 123

Personalities

Personalities apply across an agent’s evaluation runs (e.g. “interruptive”, “soft-spoken”).
cekura personalities enable-for-project 742 --personalities 3,29
cekura personalities disable-for-project 742 --personalities 3

Duplicate

Quickly fork an agent for A/B testing or a new prompt variant:
cekura agents duplicate 123

Dynamic variables

Dynamic variables let you inject runtime values into an agent’s description using {{ variable_name }} syntax. You define the variables on the agent and supply their values when sending call data to the observability endpoint.

List

GET /test_framework/v1/aiagents/{agent_id}/dynamic-variables/
Returns all variable definitions for the agent, ordered by name. Response
[
  { "id": 1, "name": "prompt", "description": "Full system prompt for this call", "created_at": "...", "updated_at": "..." },
  { "id": 2, "name": "agent_type", "description": "Role of the agent (sales, support, ...)", "created_at": "...", "updated_at": "..." }
]

Create / update

POST /test_framework/v1/aiagents/{agent_id}/dynamic-variables/
Accepts a list of { name, description } objects. Each entry is upserted by name — existing variables are updated, new ones are created. Returns the full list of definitions after the operation.
[
  { "name": "prompt", "description": "Full system prompt override" },
  { "name": "agent_type", "description": "Agent role for this session" }
]

Update one

PATCH /test_framework/v1/aiagents/{agent_id}/dynamic-variable/{id}/
Updates a single variable definition (partial update).
{ "description": "Updated description" }

Delete

DELETE /test_framework/v1/aiagents/{agent_id}/dynamic-variable/{id}/
Returns 204 No Content.
See Dynamic Agent Description for how to use these variables at call time.

See also

Evaluators

Scenarios, test profiles, personalities — the test inputs that run against an agent.

Runs & Results

Trigger an evaluation against the agent and inspect the outcome.

Agents API

Full field reference for agent payloads.

Agent setup guide

Concepts, provider integrations, and best practices.