You’ll hit the same six decision points over and over when building in Agent Studio. This page gives you a tree for each one. Follow the branches, pick the right tool, move on.
Every plugin needs at least one action. Here’s how to pick the right type.
Script actions cannot make HTTP requests — internet access is blocked at the infrastructure level. Use HTTP actions to call external APIs, then pass the response data into a script action via input_args if you need complex transforms on the result.
This decision starts with how your plugin gets triggered, not what it does.
A plugin uses one trigger type: either conversational triggers or system triggers. If you need both, create two separate plugins. See connecting ambient agents to conversational agents for the handoff pattern.
Most conversational plugins follow the same shape: one conversation process wrapping one compound action.
The conversation process handles user interaction (slots, confirmation). The compound action handles integration logic (API calls, transforms, sequencing). Clean separation.
If your conversation process genuinely needs two separate action groups — for example, a lookup followed by a create — separate them with a slot barrier:
The required_slots on the second activity forces the reasoning engine to pause and collect input. That’s the slot barrier that satisfies the Golden Rule.
Picking the wrong slot type is one of the most common mistakes. It works in testing but breaks in production when real users give unexpected input.
Every resolver adds an LLM call. A boolean slot is resolved without one. If you’re building a two-option choice (approve/reject, yes/no, enable/disable), always use boolean over a static resolver.
The fourth commandment: LLM for language, DSL for logic. If the task is deterministic — same input always produces same output — use DSL. If it requires understanding natural language, use an LLM action.
Ask yourself: “If I gave this exact input to 100 different people, would they all produce the exact same output?”
When you do use an LLM action:
gpt-4o-mini (fast, cheap, good enough for most tasks)0.3 for deterministic tasks (classification, extraction), 0.7 for creative tasks (generation)"additionalProperties": false in the response schema to prevent hallucinated fieldsDSL functions ($LOWERCASE, $CONCAT, $FORMAT_TIME, etc.) and data mappers (MAP(), FILTER(), LOOKUP(), CONDITIONAL()) work together inside output mappers and input mappers. They handle most data transformations without needing a separate action. But they have limits.
DSL runs inline in your mapper — no extra action, no latency cost:
The same transforms in Python require a separate script action and add latency:
Simple data mappers are readable and fast:
But chaining sort, filter, map, and conditional logic is where the nesting gets deep fast:
A script action is cleaner once you hit this level of nesting:
If your mapper chains SORT(), FILTER(), MAP(), and CONDITIONAL() four or five levels deep — stop. Write a script action.
Compound actions have their own control flow: for loops, switch conditionals, and parallel execution. These handle orchestration-level logic — iterating over items, branching between different actions, running steps concurrently. Script actions handle fine-grained data manipulation within a single step.
You’ll often use both: a compound action orchestrates the flow, and a script action handles a tricky transform at one step.
for LoopSend a notification to each user in a list:
You can’t do this in a script action — scripts can’t call other actions. This is compound action territory.
switchRoute to different actions based on a condition:
Use a script action when the problem is data manipulation, not action orchestration:
This needs try/except, date parsing, and conditional filtering within a single list — that’s a script action’s job. A compound action for loop can iterate and call actions, but it can’t do inline error handling or complex transforms.
The single most important architecture principle — never chain actions without a slot barrier.
Full reference for compound actions: steps, return, for loops, switch, parallel, and output mapping.
Deeper comparison with examples and the full decision process.
How to configure LLM actions for summarization, classification, extraction, and generation.