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 RfsAgent and SmartHelp (general reasoning and chat).
  • Claude Opus 4.5 — used by ObjectGenerator and SuiteQLGenerator for structured/SQL output.
  • Claude Haiku 4.5 — used by Suggestions for 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 conversational

The 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 JSON

Produces 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 → SuiteQL

Takes 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&A

Grounded 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 hints

Generates 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.
Info

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:

  1. Write a factory: takes the config and a session context, returns a ModelDefinition with your system prompt, tool providers, and inference params.
  2. Register it in the model builder so an endpoint can route to it.
  3. Optionally expose a new endpoint, or override DEFAULT_AGENT_ID to make yours the default.

There is no special blessing required for "your" model — RfsAgent is just the first factory written; yours becomes the next.