Skip to content
Covo Developers

Reference

Create an agent

Creates a new agent (Concierge) as a draft in a workspace you own, with its own page at its username.

RESTPOST /api/v1/agents
MCP toolcreate_agent
ClassificationWrite
Scopeagents:create
Minimum role on the agentowner
ConfirmationNot needed
Retry safetySend an Idempotency-Key header (REST) or idempotency_key argument (MCP) to retry safely
Success status201

What it does

Creates a new agent (Concierge) as a draft in a workspace you own, with its own page at its username. It counts toward the plan limit of agents per brand (plan_limit when full). Without brand_id it goes under the only brand of your workspace; pass workspace_id or brand_id when you own several. Then configure it, test it and publish it. Needs agents:create and a token for all agents. Send an Idempotency-Key so a retry never creates two.

Side effects

Creates a draft agent with its own page address and the caller as owner. Nothing is public until it is published. Counts toward the plan limit of agents per brand.

Inputs

NameTypeRequiredInDescription
namestringyesbodyWho the agent represents: a person or business name, like "Avery Quinn".
usernamestringyesbodyThe page address, 3 to 40 letters, digits or hyphens. Check it with check_username first.
brand_idstringnobodyThe brand to add it to, from list_workspaces.
workspace_idstringnobodyThe workspace to add it to, from list_workspaces, when it has one brand.

Example

REST
curl -X POST "https://covo.lanaai.io/api/v1/agents" \
  -H "Authorization: Bearer $COVO_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Avery Studio","username":"avery-studio"}'
MCP (POST /mcp)
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_agent",
    "arguments": {
      "name": "Avery Studio",
      "username": "avery-studio"
    }
  }
}

Response

Returns an object with id, name, represents, slug, status, role, workspace_id, brand_id, url and next_steps. This is a real response, shortened to two items per list.

201 response
{
  "id": "agt_564e5e6bece6",
  "name": "Avery Studio's Concierge",
  "represents": "Avery Studio",
  "slug": "avery-studio",
  "status": "draft",
  "role": "owner",
  "workspace_id": "8e1b4ebc-bdd7-45c2-b80a-24d90f8ab3c1",
  "brand_id": "ff09d9cc-00e0-4c13-a9db-5b3dd8d18dfd",
  "url": "https://covo.lanaai.io/avery-studio",
  "next_steps": [
    "Fill in who it represents with update_agent_configuration (identity, personality, links, knowledge).",
    "Check it with validate_agent and run_agent_test."
  ]
}

Over MCP the same object comes back as the tool result, in structuredContent and as JSON text.

Errors

StatusCodeMeaning
401unauthorizedNo token, or it is unknown, revoked or expired. OAuth apps refresh or reconnect.
403account_suspendedThe account that owns the token is paused.
403insufficient_scopeThe token lacks agents:create.
400bad_requestAn input is invalid; field names it.
409, 422idempotency_in_progress, idempotency_key_reusedSee Idempotency on the REST page.
403plan_limitThe plan is full; details has the limit.
429rate_limitedWait Retry-After seconds.