# Configuration

> **Note:** The Agent Builder is part of the Mastra Enterprise Edition. Production deployments require a valid EE license. [Contact sales](https://mastra.ai/contact) for more information.

The Agent Builder is configured through `MastraEditor.builder`. Two top-level keys control its behavior: `features` toggles UI visibility and `configuration` pins admin-controlled defaults onto every new agent.

## Quickstart

```typescript
import { MastraEditor } from '@mastra/editor'

new MastraEditor({
  builder: {
    enabled: true,
    features: {
      agent: { browser: false },
    },
    configuration: {
      agent: {
        memory: { observationalMemory: true },
      },
    },
  },
})
```

This hides the browser tab in the Builder UI and pins observational memory as the default for every Builder-created agent.

## Feature toggles

`builder.features.agent` controls which sections appear in the Agent Builder UI. Set a key to `false` to hide the corresponding surface.

```typescript
new MastraEditor({
  builder: {
    enabled: true,
    features: {
      agent: {
        tools: true,
        agents: true,
        workflows: true,
        skills: true,
        memory: true,
        model: true,
        browser: true,
        avatarUpload: true,
        favorites: true,
      },
    },
  },
})
```

The shipping UI consumes these `AgentFeatures` keys: `tools`, `agents`, `workflows`, `skills`, `memory`, `model`, `browser`, `avatarUpload`, and `favorites`. See the [AgentBuilderOptions reference](https://mastra.ai/reference/editor/agent-builder/agent-builder-options) for the full schema.

## Admin defaults

`builder.configuration.agent` pins admin-controlled defaults onto every agent the Builder produces.

```typescript
new MastraEditor({
  builder: {
    enabled: true,
    configuration: {
      agent: {
        models: {
          allowed: [
            { provider: 'openai', modelId: 'gpt-5.4-mini' },
            { provider: 'openai', modelId: 'gpt-5.4' },
            { provider: 'anthropic', modelId: 'claude-opus-4-7' },
          ],
        },
      },
    },
  },
})
```

`configuration.agent` accepts `models`, `memory`, `workspace`, `browser`, `tools`, `agents`, and `workflows`. See the [BuilderAgentDefaults reference](https://mastra.ai/reference/editor/agent-builder/builder-agent-defaults) for the full shape.

## Making tools, agents, and workflows available

The Builder picks from whatever you register on the `Mastra` instance. Tools registered through `Mastra({ tools })`, agents registered through `Mastra({ agents })`, and workflows registered through `Mastra({ workflows })` are all candidates for Builder-created agents.

```typescript
import { Mastra } from '@mastra/core/mastra'
import { MastraEditor } from '@mastra/editor'
import { createBuilderAgent } from '@mastra/editor/ee'
import { weatherInfo } from './tools/weather-info'
import { webSearch } from './tools/web-search'

export const mastra = new Mastra({
  tools: {
    weatherInfo,
    webSearch,
    // add MCP tools or additional tools here
  },
  agents: {
    builderAgent: createBuilderAgent(),
    // add additional agents here
  },
  workflows: {
    // add workflows here
  },
  editor: new MastraEditor({
    builder: { enabled: true },
  }),
})
```

With no `configuration.agent.tools.allowed` set, both `weather-info` and `web-search` appear in the Builder's tool picker. End users can attach either tool to any agent they create.

Entries match on `tool.id`, `Agent.id`, or `workflow.id` — the string the entity reports at runtime, not the export name.

MCP tools work the same way: load them via `MCPClient.getTools()` and spread the result into the `tools` map.

## Tool, agent, and workflow allowlists

`configuration.agent.tools`, `configuration.agent.agents`, and `configuration.agent.workflows` constrain which registered entries appear in the Builder's pickers. Allowlist semantics are the same for all three:

- **Omitted**: unrestricted. The picker shows every registered entry.
- **`allowed: []`**: explicit lockdown. The picker is empty.
- **`allowed: [...ids]`**: the picker shows only the listed IDs.

Unknown IDs are dropped and surfaced as warnings through `getModelPolicyWarnings()` and the server logs.

```typescript
new MastraEditor({
  builder: {
    enabled: true,
    configuration: {
      agent: {
        tools: { allowed: ['weather-info', 'web-search'] },
        agents: { allowed: ['weather-agent'] },
        workflows: { allowed: ['greet-workflow'] },
      },
    },
  },
})
```

## Related

- [Model policy](https://mastra.ai/docs/agent-builder/model-policy) — pin the allowed models and default model.
- [Memory](https://mastra.ai/docs/agent-builder/memory) — set the default memory shape for new agents.
- [AgentBuilderOptions reference](https://mastra.ai/reference/editor/agent-builder/agent-builder-options) — full property list.
- [BuilderAgentDefaults reference](https://mastra.ai/reference/editor/agent-builder/builder-agent-defaults) — every field on `configuration.agent`.