<ParamField body="function_call" type="object">
  <Expandable title="FunctionCall">
    <ParamField body="run_id" type="string" required>
      Unique identifier for the execution run
    </ParamField>
    <ParamField body="call_id" type="string" required>
      Unique identifier for this specific function call
    </ParamField>
    <ParamField body="spec" type="object" required>
      <Expandable title="FunctionCallSpec">
        <ParamField body="fn" type="string" required>
          Name of the function to execute
        </ParamField>
        <ParamField body="kwargs" type="object" required>
          Arguments to pass to the function
        </ParamField>
        <ParamField body="channel" type="object">
          Optional communication channel configuration
          <Expandable title="ContactChannel">
            <ParamField body="slack" type="object">
              <Expandable title="SlackContactChannel">
                <ParamField body="channel_or_user_id" type="string" required>
                  Slack channel or user ID (e.g. C123456 or U123456)
                </ParamField>
                <ParamField body="context_about_channel_or_user" type="string">
                  Optional context about the channel/user for the LLM
                </ParamField>
                <ParamField body="bot_token" type="string">
                  Optional custom Slack bot token
                </ParamField>
                <ParamField body="experimental_slack_blocks" type="boolean">
                  Optional flag for experimental Slack blocks
                </ParamField>
              </Expandable>
            </ParamField>
            <ParamField body="sms" type="object">
              <Expandable title="SMSContactChannel">
                <ParamField body="phone_number" type="string" required>
                  Phone number to send SMS to
                </ParamField>
                <ParamField body="context_about_user" type="string">
                  Optional context about the user for the LLM
                </ParamField>
              </Expandable>
            </ParamField>
            <ParamField body="whatsapp" type="object">
              <Expandable title="WhatsAppContactChannel">
                <ParamField body="phone_number" type="string" required>
                  Phone number for WhatsApp
                </ParamField>
                <ParamField body="context_about_user" type="string">
                  Optional context about the user for the LLM
                </ParamField>
              </Expandable>
            </ParamField>
            <ParamField body="email" type="object">
              <Expandable title="EmailContactChannel">
                <ParamField body="address" type="string" required>
                  Email address
                </ParamField>
                <ParamField body="context_about_user" type="string">
                  Optional context about the user for the LLM
                </ParamField>
                <ParamField body="experimental_subject_line" type="string">
                  Optional custom email subject line
                </ParamField>
                <ParamField
                  body="experimental_references_message_id"
                  type="string"
                >
                  Optional References message ID
                </ParamField>
                <ParamField
                  body="experimental_in_reply_to_message_id"
                  type="string"
                >
                  Optional In-Reply-To message ID
                </ParamField>
              </Expandable>
            </ParamField>
          </Expandable>
        </ParamField>
        <ParamField body="reject_options" type="array">
          Optional list of rejection reason options
          <Expandable title="ResponseOption">
            <ParamField body="name" type="string" required>
              Name of the response option
            </ParamField>
            <ParamField body="title" type="string">
              Optional display title
            </ParamField>
            <ParamField body="description" type="string">
              Optional description
            </ParamField>
            <ParamField body="prompt_fill" type="string">
              Optional prompt fill text
            </ParamField>
          </Expandable>
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>
