AI Agents Builder
What It Is
AI Agents Builder is the tenant administration surface for configuring the agents available in Jetstack embedded chat. Each configured agent defines:
- which model provider and model should be used
- which dedicated Jetstack user identity the agent should act as
- which workspace tools the agent may access
- whether the agent may work with application-model management
- which human users may see the agent in chat
- what system prompt should govern the agent’s behavior
This is not just a prompt editor. It is the control point where AI behavior, permissions, visibility, and operational risk are shaped together.
Why It Matters
AI agents in Jetstack are governed tenant capabilities, not anonymous assistants. The way you configure an agent determines:
- what the model can see
- what it can change
- whether it is read-only, action-oriented, or app-building
- who in the tenant may use it
- how much provider-side capability it receives
Good agent design therefore combines prompt design, permission design, and integration design.
How To Read This Chapter
This chapter covers:
- how AI agents work in Jetstack
- how to think about agent purpose
- what each configuration option means
- how the builder-level controls affect runtime behavior
- what the common design patterns are for general agents and app-builder agents
Use this together with:
Mental Model
An AI agent in Jetstack is a combination of five layers:
- A visible chat persona for human users.
- A dedicated Jetstack user identity that defines the hard permission boundary.
- An MCP tool and resource scope derived from that user and further narrowed by agent configuration.
- A provider and model configuration used by the AI sidecar.
- A system prompt that tells the model how to behave.
This means an agent is never defined by prompt alone. The prompt tells the model what role to play, but the user identity, allowed tools, and model-management settings decide what it is actually capable of doing.
Agent Purpose: General Agent Versus App Builder
Jetstack does not have a separate purpose field such as general or app_builder.
Instead, purpose is composed from the configuration. In practice, the two most important patterns are a general workspace agent and an app-builder agent.
General agent
A general agent is the normal business assistant pattern.
Typical characteristics:
model_management_enabledis off- the prompt focuses on business work, analysis, navigation, follow-up, support, finance, or operations
- the dedicated agent user has business-facing tenant permissions, not schema-management permissions
allowed_toolsusually contains a narrow set of workspace toolswrite_policyis oftenconfirmfor safety, orautofor tightly controlled operational agents
Use this when the agent should:
- answer questions about data
- summarize current state
- create routine follow-up work
- update business records
- help users inside the existing application
App-builder agent
An app-builder agent is the model-management pattern.
Typical characteristics:
model_management_enabledis on- the dedicated agent user has enough rights to inspect and change the application model
- the system prompt is written for schema design, model discovery, and controlled implementation work
- the visible audience is usually limited to implementers or administrators
allowed_toolsis carefully curated, because this agent can affect the application structure
When model management is enabled, Jetstack extends the agent’s MCP environment with model-related tools, resources, and prompts, but only if the dedicated agent user is actually allowed to use them.
Use this when the agent should:
- inspect the current application model
- propose or implement types and properties
- help reshape data structures
- work as an implementation assistant rather than a normal business assistant
Important distinction
Turning on model_management_enabled does not magically make an agent an app builder. It only requests model-management capability. The final result still depends on the dedicated agent user and its permissions.
In other words:
- the prompt defines intended purpose
- the dedicated user defines the hard permission boundary
model_management_enabledrequests app-builder capabilityallowed_toolsnarrows the operational surfacewrite_policydefines how write-capable actions are presented or executed
Agent Lifecycle In The Builder
The AI Agents screen supports more than just editing fields. It also manages the lifecycle of the configured agent list.
New draft
The builder always offers a draft slot for creating a new agent definition before saving it into the tenant configuration.
Save
Saving writes the normalized agent definition into tenant configuration. The agent then becomes part of the configured agent set used by embedded chat.
Enable and disable
You can toggle an agent without deleting it. Disabled agents stay configured but do not appear as available runtime agents.
Duplicate
Duplication creates a copy of an existing agent. This is useful when creating variants for different departments, providers, or permission scopes.
Move up and move down
The configured order is meaningful. The builder preserves agent order, and that order is the natural list order seen in the management surface and fed into the visible configured set.
Delete
Deleting removes the agent definition from tenant configuration.
Configuration Options
enabled
What it is
The activation switch of the agent.
Why it matters
It determines whether the agent is available to embedded chat users at all.
How to configure it
- Enable the
Enable this agentswitch when the agent should be available. - Disable it to keep the definition stored without exposing it at runtime.
How it behaves
- Disabled agents remain configured.
- Disabled agents are skipped when Jetstack builds the visible agent list for users.
When to use it
- staged rollout
- temporary suspension
- keeping draft-like variants without exposing them
name
What it is
The human-readable agent label.
Why it matters
This is the primary display name shown in the builder and chat-related agent listings.
How to configure it
- Enter a clear business-facing name in
Agent name. - Name the agent by role, not by model.
Good examples
Workspace AssistantFinance OperationsSupport TriageApplication Builder
Best practice
Prefer names that explain business purpose. Model choice may change later, but the agent’s function should remain understandable.
id
What it is
The system identifier of the agent.
Why it matters
The ID is the stable internal identifier used when selecting the agent at runtime.
How to configure it
- Enter a lowercase system ID using letters, numbers,
_, and-. - If you leave it empty, Jetstack generates it from the name.
- IDs must be unique across all configured agents.
How it behaves
- The ID is normalized and validated.
- Duplicate IDs are rejected.
- If an ID is omitted but the name exists, Jetstack derives the ID from the name.
Example
workspace_assistantfinance_opsapplication_builder
Best practice
Choose a stable ID early and avoid changing it casually once external references or user habits depend on the agent.
provider
What it is
The AI provider used for this agent.
Why it matters
Provider choice affects:
- which models are available
- which provider-hosted tools may be offered
- how the sidecar communicates with the model backend
How to configure it
- Select one supported provider from the list.
- The available providers come from the tenant’s provider catalog.
Current behavior
The platform currently exposes provider options from the configured provider catalog, for example OpenAI, Anthropic, and Gemini.
Best practice
Choose the provider based on:
- required model family
- needed provider-hosted tools
- operational policy and cost expectations
model
What it is
The specific model ID used for the agent.
Why it matters
The model influences quality, speed, reasoning support, and provider-specific tool behavior.
How to configure it
- Select a model suggested for the chosen provider.
- The form refreshes model choices according to the selected provider.
- The runtime also accepts provider model IDs beyond the friendly label list as long as the provider can resolve them.
How it behaves
- Jetstack normalizes provider-specific aliases to canonical model IDs where known.
- If the selected provider changes, the builder resolves the model again against that provider.
Best practice
- Use a smaller, cheaper model for routine agents.
- Use a stronger model for app-building, planning, or high-ambiguity work.
- Keep model selection aligned with the agent’s actual job instead of defaulting every agent to the strongest available model.
reasoning_effort
What it is
An optional reasoning override for models that support reasoning-effort levels.
Why it matters
It lets you increase or reduce the depth of reasoning requested from the model.
How to configure it
- Choose
Use model defaultto inherit the model’s default behavior. - Or choose one supported level such as
minimal,low,medium, orhigh.
How it behaves
- Jetstack only keeps the override if the chosen model supports that reasoning level.
- If the override is invalid for the current model, it is ignored.
- If no explicit override is set, Jetstack may still use the model’s default reasoning setting if one exists.
When to use it
- Lower settings for simple high-volume assistants.
- Higher settings for complex analysis or implementation guidance.
Best practice
Leave this at model default unless you have a clear reason to tune it.
write_policy
What it is
The policy controlling how write-capable or action-capable capabilities are executed.
Why it matters
This is one of the main safety controls of the agent.
How to configure it
- Choose
Auto-run writeswhen the agent should execute allowed write actions immediately. - Choose
Require approvalwhen write-capable actions should return as approval-required instead of executing immediately.
How it behaves
- Read capability always remains available.
- This setting mainly affects write and action operations.
- It does not expand permissions. It only changes how allowed writes are handled.
General guidance
- For general assistants,
confirmis usually the safer default. - For tightly scoped operational agents,
autocan be appropriate. - For app-builder agents,
confirmis usually the better starting point unless you are deliberately building a trusted implementation assistant.
api_key_ref
What it is
The Secrets Manager reference to the provider API key for this agent.
Why it matters
It is the preferred way to assign provider credentials without embedding them directly into normal tenant configuration.
How to configure it
- Create the provider credential in Secret Store.
- Select that secret in
Provider API key secret. - Leave it empty only if you intentionally want the sidecar’s environment-level fallback key to be used.
How it behaves
- If a secret is selected, the sidecar resolves the provider key from that secret.
- If the referenced secret no longer exists, the agent becomes invalid.
Best practice
- Use a dedicated secret for important agents.
- Avoid relying on sidecar fallback credentials in production unless that is an intentional infrastructure policy.
provider_tools
What it is
Optional provider-hosted tools exposed directly by the selected model provider.
Why it matters
These tools are separate from Jetstack MCP tools. They represent provider-native capabilities such as hosted image generation or code execution.
How to configure it
- Select one or more provider tools from the list shown for the selected provider.
- The available options depend on the provider.
How it behaves
- The option list changes with the provider.
- Unsupported provider tools are rejected.
- These tools are additive provider capabilities, not tenant permission grants.
Examples
- OpenAI may expose
image_generationorcode_interpreter. - Anthropic may expose
code_execution. - Some providers may expose no provider tools at all.
Best practice
Enable provider tools only when the agent really needs them. Do not turn them on by default just because they are available.
agent_user_id
What it is
The dedicated Jetstack user identity used by the agent.
Why it matters
This is one of the most important settings in the whole builder. The dedicated user defines the hard boundary for what the agent may do in Jetstack.
How to configure it
- Create a dedicated non-human user in Users.
- Assign only the required roles.
- Optionally place it in a dedicated group such as
Application accessorAI agents. - Select that user in
Dedicated app user.
How it behaves
- The agent runs through this user identity.
- Jetstack derives MCP access from this user’s permissions.
- Object changes remain attributable to this acting identity.
- If the user cannot be resolved, the agent is not valid for runtime use.
Best practice
Always use a dedicated application user. Do not point production agents at a human administrator account.
promptTemplate
What it is
A builder helper for applying a predefined system-prompt starting point.
Why it matters
It speeds up agent creation by giving you a strong role-based baseline prompt.
How to configure it
- Choose one of the built-in prompt templates.
- Apply it into the
system_promptfield. - Then tailor the resulting prompt for your tenant.
How it behaves
- This control does not store separate runtime state by itself.
- It is an authoring aid that writes prompt content into
system_prompt.
Current prompt-template direction
The platform includes templates such as:
- workspace assistant
- read-only analyst
- project coordinator
- client success assistant
- support triage agent
- operations executor
- finance operations assistant
Best practice
Use prompt templates as starting points, not as final production prompts.
system_prompt
What it is
The main behavioral instruction set for the agent.
Why it matters
The system prompt defines:
- the agent’s role
- tone
- decision style
- safety expectations
- escalation behavior
- how to use tools
This is the main place where the intended purpose of the agent is expressed.
How to configure it
- Write a prompt that explains what the agent is for.
- Define what it should prioritize.
- State whether it may act, analyze only, or require clarification before changes.
- Align the prompt with the real permissions of the dedicated user.
How it behaves
- The prompt is passed into the runtime session payload.
- If model management is enabled, Jetstack appends additional model-management guidance to the effective system prompt.
Best practice
- Keep prompts operational and concrete.
- Do not describe powers the agent does not actually have.
- For app-builder agents, explicitly instruct the agent to inspect the current model first and to prefer deliberate schema changes.
model_management_enabled
What it is
A switch that requests application-model management capability for the agent.
Why it matters
This is the main configuration difference between a general business agent and an app-builder agent.
How to configure it
- Turn this on when the agent should inspect and change the application model.
- Keep it off for normal business assistants working only inside the existing app.
How it behaves
- When enabled, Jetstack tries to extend the agent scope with model-management MCP tools, resources, and prompts.
- Jetstack also appends special model-management guidance to the effective system prompt.
- The final capability still depends on what the dedicated agent user is actually allowed to do.
Important warning
This setting is a request, not a guarantee. If the dedicated user lacks the necessary permissions, model-management capability will be partial or absent.
Best practice
- Turn this on only for implementation-oriented agents.
- Pair it with a carefully designed dedicated agent user and narrow audience visibility.
allowed_tools
What it is
The explicit allow-list of Jetstack MCP tools the agent may use.
Why it matters
This is the main scope-narrowing control after the dedicated user identity.
How to configure it
- Select the tools the agent should be able to call.
- The option list is derived from the dedicated user’s permissions and whether model management is enabled.
- You can also keep previously stored tool names when refining an agent over time.
How it behaves
- If the list is empty, the agent receives all MCP tools available to its dedicated user identity.
- If the list is populated, the runtime intersects the agent’s tool scope with that selected subset.
- When model management is enabled and the user is allowed to manage the model, Jetstack also includes the model tool family required for that scope.
Best practice
- Treat empty as wide-open within the agent identity.
- For production agents, prefer explicit scoping.
- For app-builder agents, include only the model and workspace tools the agent truly needs.
visible_to_human_roles
What it is
The role-based visibility filter for who may see the agent in embedded chat.
Why it matters
Not every agent should be visible to every authenticated human user.
How to configure it
- Select one or more human roles.
- Leave it empty for no role-based restriction.
How it behaves
- If empty, role membership does not restrict visibility.
- If populated, the human user must have at least one matching role to see the agent.
When to use it
- department-specific assistants
- implementer-only app-builder agents
- manager-only strategy assistants
visible_to_human_users
What it is
The user-specific visibility filter for who may see the agent in embedded chat.
Why it matters
It allows targeted rollout to named individuals without introducing a separate role.
How to configure it
- Select one or more specific human users.
- Leave it empty for no user-specific restriction.
How it behaves
- If empty, user-specific visibility is not restricted.
- If populated, only the listed users may see the agent.
Best practice
- Use this for pilot rollout, testing, or executive-only assistants.
- Prefer role-based visibility for larger stable audiences.
How The Main Options Work Together
The most important design combinations are:
Business assistant pattern
model_management_enabled: offagent_user_id: dedicated business-facing application userallowed_tools: read and routine action tools onlywrite_policy: usuallyconfirmvisible_to_human_roles: scoped to the intended audiencesystem_prompt: operational, concise, business-specific
Read-only analyst pattern
model_management_enabled: offallowed_tools: read-only or narrow analytical setwrite_policy:confirmsystem_prompt: explicitly forbids side effects
Operations executor pattern
model_management_enabled: offallowed_tools: tightly bounded write toolswrite_policy: oftenautosystem_prompt: explicit, procedural, and conservative
App-builder pattern
model_management_enabled: onagent_user_id: dedicated implementation user with model permissionsallowed_tools: curated model-management and workspace setwrite_policy: usuallyconfirmvisible_to_human_roles: implementers or administrators onlysystem_prompt: implementation-oriented and schema-aware
Validation And Failure Modes
An agent becomes invalid when key configuration requirements are not met.
Common reasons include:
- missing or duplicate
id - missing
name - unsupported
provider - missing
model - unsupported provider tools
- missing or invalid
agent_user_id - missing secret referenced by
api_key_ref
The builder surfaces invalid configurations so they can be fixed before relying on the agent.
Best Practices
- Create one dedicated application user per meaningful agent or agent family.
- Name agents by business purpose, not by model marketing name.
- Keep
allowed_toolsexplicit for production agents. - Use
visible_to_human_rolesandvisible_to_human_usersto keep specialized agents out of broad circulation. - Keep
model_management_enabledoff unless the agent is intentionally an implementation assistant. - Treat app-builder agents as higher-risk tools and scope them tightly.
- Store provider credentials in Secret Store, not in ad hoc notes or config fields elsewhere.