Skip to main content
Glama

agents_create

Create a new AI agent in the workspace.

Execution modes:

  • ai_assisted (default): Two-phase AI — fast pre-classifier (Haiku) for keyword filtering and simple replies, then full AI with tools for complex messages.

  • agentic: Autonomous multi-step agent with planning and tool execution.

  • rule_based: Simple pattern matching without AI.

Keyword filtering is available in ai_assisted mode via keywords in trigger conditions (free, deterministic) and/or auto_reply_rules (LLM-based) set through agents.update.

Pass prompt_text for the agent's instructions (stored inline on the agent) or prompt_id to link an existing prompt row, not both.

Tools: a new agent starts with the standard tool set (knowledge base lookup, replying, lead capture, reading files, handoff, plus the default voice-call tools). Pass allowed_tools to replace that set.

From a template: pass template (e.g. 'dm-auto-reply') to create the agent AND its built-in trigger in one call — deterministic, no need to add a trigger separately. When template is set, name/text_engine/send_mode come from the template.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesName of the AI agent (1-100 characters)
modelNoLLM the agent runs on. OMIT to use the platform default (deepseek-v4-flash-nothink). Applied right after creation so you don't need a follow-up agents_update.
templateNoOptional template slug to instantiate the agent + its built-in trigger from (deterministic). Use 'dm-auto-reply' for the customer DM auto-reply agent (incoming DM trigger, draft mode). When set, the trigger comes from the template — you don't need agents.trigger_create. OMIT to create a plain agent (no template).
prompt_idNoID of the prompt to assign to this agent
send_modeNoDefault send mode: 'auto' or 'draft'. OMIT to use 'draft' (the default).
descriptionNoOptional description of what this agent does
prompt_textNoThe agent's instructions, stored inline on the agent (this is what drives how it replies). Works with or without `template`; no separate prompts tool needed. Write it from the business to its customers.
remote_toolNoOnly for text_engine='external_agent': the workspace integration tool that starts the remote agent, e.g. 'ext42_run_routine' (list them with integrations.search_tools). On each trigger DialogBrain calls it once with the event, the agent's instructions and the ids to answer with; the remote agent replies through the DialogBrain MCP tools (messages.send, tasks.comment, agents.task_complete). The endpoint and its secret belong to the integration, not to the agent.
text_engineNoText-execution engine: 'rule_based', 'ai_assisted', 'agentic' (default), 'claude_channels', or 'external_agent' (the run is handed to an agent outside DialogBrain; needs remote_tool). Voice is derived from triggers, not engine. OMIT to use the default ('agentic').
in_workspaceNoRun this one call in this workspace id instead of the session's. Nothing is stored; other sessions are not affected.
allowed_toolsNoExplicit allow-list of tool IDs the agent may call on triggered runs (e.g. ['knowledge.query', 'messages.send']). OMIT to give the agent the standard set: knowledge.query, messages.send, contacts.capture_lead, files.read, agent.handoff (plus the default voice-call tools). When passed, the list REPLACES the standard set entirely — include 'knowledge.query' for an agent that must answer from its knowledge base, or the model has no such tool and tends to imitate the call in its reply text. An empty list leaves the agent with no tools.
max_iterationsNoHard cap on agentic-loop turns per run (1-50). OMIT for the default (10).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / in_workspace
      Added value: +{
      +  "description": "Run this one call in this workspace id instead of the session's. Nothing is stored; other sessions are not affected.",
      +  "type": "integer"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / remote_tool
      Added value: +{
      +  "description": "Only for text_engine='external_agent': the workspace integration tool that starts the remote agent, e.g. 'ext42_run_routine' (list them with integrations.search_tools). On each trigger DialogBrain calls it once with the event, the agent's instructions and the ids to answer with; the remote agent replies through the DialogBrain MCP tools (messages.send, tasks.comment, agents.task_complete). The endpoint and its secret belong to the integration, not to the agent.",
      +  "type": "string"
      +}
    • changedInput schema / properties / text_engine / description
      Previous value: -"Text-execution engine: 'rule_based', 'ai_assisted', 'agentic' (default), or 'claude_channels'. Voice is derived from triggers, not engine. OMIT to use the default ('agentic')."New value: +"Text-execution engine: 'rule_based', 'ai_assisted', 'agentic' (default), 'claude_channels', or 'external_agent' (the run is handed to an agent outside DialogBrain; needs remote_tool). Voice is derived from triggers, not engine. OMIT to use the default ('agentic')."
    • changedInput schema / properties / text_engine / enum
      Previous value: -[
      -  "rule_based",
      -  "agentic",
      -  "claude_channels"
      -]New value: +[
      +  "rule_based",
      +  "agentic",
      +  "claude_channels",
      +  "external_agent"
      +]
  3. Added
  4. Removed
  5. Changed2 schema fields changed
    • addedInput schema / properties / prompt_text
      Added value: +{
      +  "description": "Only with `template`: the agent's persona/instructions, stored inline on the agent (drives how it replies). No separate prompts tool needed.",
      +  "type": "string"
      +}
    • addedInput schema / properties / template
      Added value: +{
      +  "description": "Optional template slug to instantiate the agent + its built-in trigger from (deterministic). Use 'dm-auto-reply' for the customer DM auto-reply agent (incoming DM trigger, draft mode). When set, the trigger comes from the template — you don't need agents.trigger_create. OMIT to create a plain agent (no template).",
      +  "enum": [
      +    "dm-auto-reply"
      +  ],
      +  "type": "string"
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "deepseek-chat",
      -  "deepseek-reasoner",
      -  "gpt-4.1",
      -  "gpt-4.1-mini",
      -  "gpt-4.1-nano",
      -  "gpt-4o",
      -  "claude-haiku-4-5-20251001",
      -  "claude-sonnet-4-6",
      -  "claude-opus-4-6",
      -  "kimi-k2.6"
      -]New value: +[
      +  "deepseek-chat",
      +  "deepseek-reasoner",
      +  "gpt-4.1",
      +  "gpt-4.1-mini",
      +  "gpt-4.1-nano",
      +  "gpt-4o",
      +  "claude-haiku-4-5-20251001",
      +  "claude-sonnet-4-6",
      +  "claude-sonnet-5",
      +  "claude-opus-4-6",
      +  "kimi-k2.6"
      +]
  7. Changed3 schema fields changed
    • addedInput schema / properties / allowed_tools
      Added value: +{
      +  "description": "Explicit allow-list of tool IDs the agent may call on triggered runs (e.g. ['workbench.run_python', 'messages.send']). OMIT to use system defaults. Applied right after creation.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / max_iterations
      Added value: +{
      +  "description": "Hard cap on agentic-loop turns per run (1-50). OMIT for the default (10).",
      +  "type": "integer"
      +}
    • addedInput schema / properties / model
      Added value: +{
      +  "description": "LLM the agent runs on. OMIT to use the platform default (deepseek-chat). Applied right after creation so you don't need a follow-up agents_update.",
      +  "enum": [
      +    "deepseek-chat",
      +    "deepseek-reasoner",
      +    "gpt-4.1",
      +    "gpt-4.1-mini",
      +    "gpt-4.1-nano",
      +    "gpt-4o",
      +    "claude-haiku-4-5-20251001",
      +    "claude-sonnet-4-6",
      +    "claude-opus-4-6",
      +    "kimi-k2.6"
      +  ],
      +  "type": "string"
      +}
  8. Changed1 schema field changed
    • changedInput schema / properties / text_engine / description
      Previous value: -"Text-execution engine: 'rule_based', 'ai_assisted', 'agentic' (default), or 'claude_channels'. Voice is derived from triggers, not engine."New value: +"Text-execution engine: 'rule_based', 'ai_assisted', 'agentic' (default), or 'claude_channels'. Voice is derived from triggers, not engine. OMIT to use the default ('agentic')."
  9. Changed2 schema fields changed
    • removedInput schema / properties / execution_mode
      Removed value: -{
      -  "description": "Execution mode: 'rule_based', 'ai_assisted' (default), 'agentic', 'claude_channels', or 'voice'. OMIT to use 'ai_assisted'.",
      -  "enum": [
      -    "rule_based",
      -    "ai_assisted",
      -    "agentic",
      -    "claude_channels",
      -    "voice"
      -  ],
      -  "type": "string"
      -}
    • addedInput schema / properties / text_engine
      Added value: +{
      +  "description": "Text-execution engine: 'rule_based', 'ai_assisted', 'agentic' (default), or 'claude_channels'. Voice is derived from triggers, not engine.",
      +  "enum": [
      +    "rule_based",
      +    "ai_assisted",
      +    "agentic",
      +    "claude_channels"
      +  ],
      +  "type": "string"
      +}
  10. Changed2 schema fields changed
    • addedInput schema / properties / execution_mode
      Added value: +{
      +  "description": "Execution mode: 'rule_based', 'ai_assisted' (default), 'agentic', 'claude_channels', or 'voice'. OMIT to use 'ai_assisted'.",
      +  "enum": [
      +    "rule_based",
      +    "ai_assisted",
      +    "agentic",
      +    "claude_channels",
      +    "voice"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / text_engine
      Removed value: -{
      -  "description": "Text-execution engine: 'rule_based', 'ai_assisted', 'agentic' (default), or 'claude_channels'. Voice is derived from triggers, not engine.",
      -  "enum": [
      -    "rule_based",
      -    "ai_assisted",
      -    "agentic",
      -    "claude_channels"
      -  ],
      -  "type": "string"
      -}
  11. Changed2 schema fields changed
    • removedInput schema / properties / execution_mode
      Removed value: -{
      -  "description": "Execution mode: 'rule_based', 'ai_assisted' (default), 'agentic', 'claude_channels', or 'voice'. OMIT to use 'ai_assisted'.",
      -  "enum": [
      -    "rule_based",
      -    "ai_assisted",
      -    "agentic",
      -    "claude_channels",
      -    "voice"
      -  ],
      -  "type": "string"
      -}
    • addedInput schema / properties / text_engine
      Added value: +{
      +  "description": "Text-execution engine: 'rule_based', 'ai_assisted', 'agentic' (default), or 'claude_channels'. Voice is derived from triggers, not engine.",
      +  "enum": [
      +    "rule_based",
      +    "ai_assisted",
      +    "agentic",
      +    "claude_channels"
      +  ],
      +  "type": "string"
      +}
  12. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) already establish that this is a non-idempotent write, and the description usefully adds that `model` is applied post-creation (no follow-up update), that `allowed_tools` REPLACES the standard set, and that an empty list leaves no tools. Against that, it introduces a real ambiguity: the body calls `ai_assisted` the default mode while the schema declares `agentic` the default and omits `ai_assisted` from the enum entirely, muddying the core behavior of an omitted text_engine.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then uses labeled bullets for modes and short paragraphs for tools/templates, which is well structured for a 12-parameter tool. It repeats a fair amount of schema text (model, template, allowed_tools) and the execution-mode list carries the misleading default claim, costing the top score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should ideally say what creation returns (agent id/handle), which it omits. Otherwise it covers the complex boolean-like interactions (template suppressing name/text_engine/send_mode, tool-list semantics, engine modes) well enough for an agent to call it correctly, modulo the default-mode inconsistency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding semantics the schema lacks, notably the mutual exclusivity of `prompt_text`/`prompt_id` and the replacement (not additive) behavior of `allowed_tools`. It does not add much to `model`, `max_iterations`, or `in_workspace` beyond what the schema text already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new AI agent in the workspace') and immediately distinguishes itself from siblings by covering execution modes, template instantiation, and tool assignment. An agent can tell it apart from agents_update, agents_update_from_template, and agents_trigger_create without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear routing conditions: use `template` to also get the built-in trigger ('no need to add a trigger separately'), use `prompt_text` or `prompt_id` but not both, and reference to agents.update for keyword/reply-rule config. It does not, however, state when to prefer this over agents_update or agents_update_from_template for an existing agent, leaving one sibling choice to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.