> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Scripted Reply • AI Agent SDK

> ScriptedReply: One assistant turn the double should return.

# ScriptedReply

> Defined in the [**scripted**](../modules/scripted) module.

<Badge color="blue">AI Agent</Badge>

One assistant turn the double should return.

Attributes:
text: Assistant message content, or `None` for a pure tool-call turn.
tool\_calls: Tool calls to emit alongside/instead of `text`.
finish\_reason: Overrides the finish reason ("tool\_calls" when the turn
has tool calls, otherwise "stop").
usage: Optional `&#123;"prompt_tokens": .., "completion_tokens": ..&#125;` to
report, for tests that assert on token accounting.

## Properties

<ResponseField name="text" type="Optional[str]">
  No description available.
</ResponseField>

<ResponseField name="tool_calls" type="Tuple[ScriptedToolCall, ...]">
  No description available.
</ResponseField>

<ResponseField name="finish_reason" type="Optional[str]">
  No description available.
</ResponseField>

<ResponseField name="usage" type="Optional">
  No description available.
</ResponseField>

## Methods

<CardGroup cols={2}>
  <Card title="resolved_finish_reason()" icon="function" href="../functions/ScriptedReply-resolved_finish_reason">
    The finish reason to report for this turn.
  </Card>
</CardGroup>

## Source

<Card title="View on GitHub" icon="github" href="https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-agents/praisonaiagents/model_harness/scripted.py#L113">
  `praisonaiagents/model_harness/scripted.py` at line 113
</Card>
