Models
A model in the agent backend isn't just a foundation model — it's a bundle: a system prompt, a tool set, inference parameters, and a few behavioral overrides. Picking a model is picking a behavior, not a vendor.
What a model is
Each model definition carries:
- A system prompt composed at request time from product/tenant/user prompt overrides.
- A set of tool providers the model is allowed to draw tools from.
- A maximum step count — the most tool invocations it can do per turn before the server forces a final answer.
- Inference params — temperature, top-p, max output tokens.
- Prompt-caching flags — whether the system prompt and tools section should be marked for Anthropic's prompt cache.
Under the hood, all models currently route to the Claude 4.5 family on Bedrock — the model definition picks which variant:
- Claude Sonnet 4.5 — default for
RfsAgentandSmartHelp(general reasoning and chat). - Claude Opus 4.5 — used by
ObjectGeneratorandSuiteQLGeneratorfor structured/SQL output. - Claude Haiku 4.5 — used by
Suggestionsfor fast, cheap follow-up hints.
The specific Bedrock model IDs are deployment-configurable via env vars
(DEFAULT_BEDROCK_MODEL_ID, DEFAULT_BEDROCK_MODEL_ID_OBJECT_GENERATOR,
etc.), so this lineup may shift as newer models land.
Models that ship today
These are the model bundles included in the box. Each is a factory function — pluggable, not a hardcoded registry.
RfsAgentgeneral conversationalThe default. Long context, broad tool access, designed for back-and-forth conversations. Its shipped system prompt is product-flavored — override it via the prompt hierarchy to brand the agent for your surface.
ObjectGeneratorstructured JSONProduces JSON conforming to a caller-supplied schema. No tool use; the output is the artifact. Use this when you need a typed result for a UI to render, not a chat reply.
SuiteQLGeneratornatural language → SuiteQLTakes a description and emits a SuiteQL query. Single-turn, no follow-up conversation. Ships as an example of a product-specific generator — same shape works for any SQL-like dialect.
SmartHelpdocumentation Q&AGrounded answers against a documentation corpus. Retrieval-augmented —
it has read-only access to a vector index you configure. Follows the
default model (Sonnet 4.5) unless overridden via
DEFAULT_BEDROCK_MODEL_ID_SMART_HELP.
Suggestionsquick-reply hintsGenerates short follow-up suggestions for a chat surface. Cheap, fast, Haiku 4.5-backed. Considered deprecated in favor of in-place suggestions on the messages endpoint, but still supported.
Choosing one
- Building a chat UI? → RfsAgent (override its system prompt for your product).
- Need a typed object out? → ObjectGenerator with your JSON schema.
- Need to draft a query for your data store? → SuiteQLGenerator as the template; fork it for non-SuiteQL dialects.
- Building a help/FAQ surface backed by docs? → SmartHelp.
The model is selected by the endpoint you call, not by a request parameter. There isn't a generic "pick a model" parameter on the messages endpoint — different endpoints route to different models.
Adding your own
Each model is a factory function that returns a model definition. To add one:
- Write a factory: takes the config and a session context, returns a
ModelDefinitionwith your system prompt, tool providers, and inference params. - Register it in the model builder so an endpoint can route to it.
- Optionally expose a new endpoint, or override
DEFAULT_AGENT_IDto make yours the default.
There is no special blessing required for "your" model — RfsAgent is
just the first factory written; yours becomes the next.