Skip to main content

Slots 101: The Inputs That Make Plugins Work

  • February 4, 2026
  • 0 replies
  • 60 views

Kevin Mok
Forum|alt.badge.img+1

The Agent Builder

Your plugin keeps asking users for things it should already know.

"What's your employee ID?" — it's in their profile. "Which ticket?" — they just mentioned it. "Who's the requester?" — obviously them.

This is the slot inference problem. And once you understand how slots actually work, you stop building plugins that interrogate users and start building plugins that just... get it.

By the end of this issue, you'll know how to configure inference, write tight descriptions, and validate inputs — so your plugin collects what it needs without wasting round trips.


One Big Thing: Slots, Unpacked

Slots are the inputs your plugin needs to do its job. "Close my Jira ticket" needs a ticket. "Book a meeting" needs attendees. "Submit PTO" needs dates.

slots:
ticket:
type: u_JiraIssue
description: "The Jira ticket to close"

comment:
type: string
description: "Closing comment"

But here's where it gets interesting: slots don't have to be collected by asking. The assistant can figure them out.


Inference: When to Ask, When to Know

Every slot has an inference policy that controls how the assistant fills it.

Always Ask — The assistant prompts every time. Use this for sensitive inputs where you need explicit confirmation. "Are you sure you want to delete this?"

Infer If Available — The assistant looks at context first. If the user said "close my bug ticket from yesterday," it infers which ticket. If ambiguous, it asks. This is the default and usually what you want.

Always Infer — The assistant never asks. It only infers from conversation context. If it can't find a value, it uses the fallback value you configure. Use this for slots where prompting would break the flow.

The difference between a plugin that feels smart and one that feels like a form? Inference policy.

Take a PTO request plugin. With poor inference config, the assistant asks four questions in sequence — start date, end date, reason, manager. Four LLM round trips. Four waits. With smart inference, it pulls your manager from your profile, infers dates from "next Friday through Monday," and asks only what's ambiguous.

Every slot prompt is an LLM call. The faster you get to the tool call, the better the experience.


Descriptions: Keep Them Tight

Slot descriptions help the assistant understand what it's collecting. They're not heavily weighted, but they influence behavior.

slots:
start_date:
type: string
description: "Start date for PTO. Format: YYYY-MM-DD."

One or two sentences. What is this slot? Any formatting expectations?

Here's what bit us in the past: We wrote long, detailed descriptions thinking more context = better reasoning. Wrong. Long descriptions bloat context and make the agentic reasoning engine behave inconsistently.

We learned the hard way. Now the rule is simple: one sentence, maybe two. What is this slot? Any format constraints? Done. The agentic reasoning engine works better with less — give it a clear definition, not a tutorial.


Validation: Reject Bad Inputs Early

Slots can validate before the value hits your action:

validation:
expression: "$PARSE_TIME(value) >= $TIME()"
error_message: "Date must be today or later"

User enters "yesterday"? Rejected. "Next Friday"? Accepted.

Catch bad data at the slot level. Less error handling downstream.

But here's the bigger win: early rejection improves the conversation itself. If a user provides three values upfront and one is invalid, the assistant can flag the bad input and ask for missing values in the same turn — instead of collecting everything, attempting the action, failing, and starting over.


Quick Hits

Data Mapper in HTTP Action Bodies — Use Data Mapper syntax directly in HTTP bodies. MAP(), FILTER(), conditional fields. No more Mustache + $STRINGIFY_JSON() gymnastics. Docs

Optional Slots have dropped — Slots with fallback values. Set a default when the user doesn't provide one. Use "Always Infer" to skip prompting entirely. Pass values between slots with DSL expressions.

Developer Shorts are live — We're shipping bite-sized videos on Agent Studio. First one: "What is a Plugin?" 60 seconds, zero fluff.


Worth Reading


Join the Community

Building plugins? Come share what you're working on in the community.

Office Hours are back for 2026. Sign up here.

— Kevin

Developer Advocate @ Moveworks | Agent Studio

P.S. Reply if you've got slot patterns that work. I'll feature the good ones.