Skip to main content
Glama

simulate_ab_test

Start async A/B simulation test comparing two agent configurations. Executes multi-turn simulated conversations for BOTH configurations against identical personas and scenarios, then compares performance metrics. Returns a jobId immediately - use get_simulation_status to poll for results. Three ways to specify the variant: (1) variantPrompt — full prompt content; (2) variantPromptId — reference an existing stored prompt; (3) variantOverrides — array of find/replace ops applied on top of the resolved baseline (no need to send full content, server applies the diff). Same for baseline (variantOverrides has no baseline equivalent — baseline must come from baselinePrompt or baselinePromptId).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
runIdNoProvider run ID for the runtime context snapshot. Required with conversationId when runtimeContextId is not provided.
maxTurnsNoMaximum turns per conversation (default: 10)
customerIdNo(Converra superadmin only) Target customer ID to act on behalf of
personaCountNoTotal number of personas to use
scenarioCountNoTotal number of scenarios to use
variantPromptNoThe challenger agent's full system prompt content. Use this OR variantPromptId OR variantOverrides.
baselinePromptNoThe baseline agent's system prompt content. Either this or baselinePromptId must be provided.
conversationIdNoConversation ID containing the runtime context snapshot. Required with runId when runtimeContextId is not provided.
simulationTypeNoSimulation type: standard, context_grounded_probe (one-turn context probe), or context_grounded_dialogue (multi-turn context-grounded dialogue). Context-grounded types require baselinePromptId plus runtimeContextId or conversationId with runId.
includePersonasNoOptional specific personas to include
variantPromptIdNoAlternative to variantPrompt: ID of stored agent to use as variant.
baselinePromptIdNoAlternative to baselinePrompt: ID of stored agent to use as baseline. Also fetches LLM settings.
includeScenariosNoOptional specific scenarios to include
runtimeContextIdNoRuntime context snapshot ID to bind for both A/B arms. Use this OR conversationId with runId.
variantOverridesNoConstruct the variant by applying find/replace overrides on top of the resolved baseline content. Avoids sending the full prompt when the change is small. Each override's `find` string must occur exactly once in the prompt (after prior overrides have been applied) — multiple or zero matches throw a validation error. Order matters: each find runs against the result of prior overrides. Anchors are case-sensitive and match any substring (including inside larger words) — include surrounding whitespace/punctuation to disambiguate short anchors. Example: [{find: "Be concise.\n", replace: "Be concise and warm.\n"}]. Use this OR variantPrompt OR variantPromptId.
conversationsPerPersonaNoConversations per persona (default: 1)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safety profile (readOnlyHint=false, destructiveHint=false); the description adds the async contract (returns jobId immediately, poll via get_simulation_status), the multi-turn/both-arms execution model, and a validation-failure behavior ('multiple or zero matches throw a validation error'). This is substantive context beyond structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, async behavior, and polling pointer before the denser variant-specification detail, so the critical routing info is early. The trailing parenthetical about the baseline constraint is slightly run-on but earns its place by closing a real ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter tool with no output schema and no required params, the description supplies the missing return semantics (jobId) and the conditional-requirement logic (runId+conversationId, baselinePrompt vs baselinePromptId, context-grounded type prerequisites). It leaves some interactions implicit, but is adequate to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage the baseline is 3, but the description adds real value by explaining parameter relationships the schema only states individually: the three-way variant choice, the resolved-baseline layering, and that variantOverrides has no baseline counterpart so baseline must come from baselinePrompt or baselinePromptId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Start async A/B simulation test comparing two agent configurations' — and its scope (BOTH arms, identical personas/scenarios) distinguishes it from single-agent siblings like simulate_agent and benchmark_models. An agent can identify it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to get_simulation_status for polling results, and enumerates the three mutually exclusive variant-specification paths with conditions ('no need to send full content, server applies the diff'). It also states the baseline constraint (no variantOverrides equivalent). It does not explicitly say when to prefer this over simulate_agent, so no full exclusion set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources