Skip to content

Agent Presets

Noeta ships four official agents aligned with Claude Code's roster. The agent is chosen per task in the POST /tasks body ({"goal": …, "agent": …}), not at process launch. Custom agents go through the flat Options.agents dict.

The quartet

AgentRoleToolsCapabilities
mainDefault coding agent: full built-in tool surface + can spawn the three subagents + all capabilities.Full built-in set (all fs + web + app + memory tools)todo_write, ask_user_question, delegation, skill_invocation, memory, mcp
general-purposeSelf-contained coding worker: full read/write/edit/shell set, no delegation.apply_patch, edit, glob, grep, read, shell_kill, shell_poll, shell_run, web_search, webfetch, writeskill_invocation, mcp
exploreRead-only scout: glob/grep/read + read-only shell, fans out to report facts, never edits.glob, grep, read, shell_kill, shell_poll, shell_run, webfetchskill_invocation
planRead-only architect: reads the code and returns a concrete ordered implementation plan, never writes.glob, grep, read, shell_kill, shell_poll, shell_run, webfetchask_user_question

Capability flags

FlagWhat it enables
todo_writeThe todo_write control tool (state-patch based progress tracking).
ask_user_questionThe model can yield for human input via ask_user_question control tool.
delegationCan spawn subtasks via the three subagents (general-purpose, explore, plan).
skill_invocationThe skill control tool for model-driven skill selection.
memoryCross-task memory: memory_write / memory_read tools + auto-recall at user-message seam. Only main enables this.
mcpMCP tool inheritance: subtasks whose own spec also opens mcp inherit the parent's enabled MCP servers.

Sub-agent fan-out

main can spawn the three subagents in parallel; the result is the subagent's return value, recorded into the EventLog so the whole tree folds back into state. See ADR: Subtask fan-out and durable wake and ADR: Subtask parallel execution.

Using presets programmatically

python
from noeta import presets
from noeta.sdk import Client, query

# Build the main agent's Options
options = presets.main_options()

# Run an agent in-process
result = query(options, goal="Refactor module X to use Y")

Or compile all four agents as specs:

python
from noeta.presets import official_specs
specs = official_specs()
# → {"main": AgentSpec, "general-purpose": AgentSpec, "explore": AgentSpec, "plan": AgentSpec}

Custom agents

Define custom agents via the flat Options.agents dict:

python
from noeta.sdk import Options, AgentDefinition

options = Options(
    system_prompt="You are a docs writer.",
    agents={
        "reviewer": AgentDefinition(
            description="Reviews docs for accuracy and clarity.",
            prompt="...",
            tools=["read", "grep", "glob"],
        ),
    },
)

Source

Released under the MIT License.