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

# Add agent reply fix

> Add the fix route_agent_fix drafted, as drafted or edited, through its place's own verb: the answer to Knowledge, the golden reply, the Brief line, the voice line, the Rules field, the line under the step's instructions. result.applied says what was added and what stood before (for Undo through the place's own verb); result.hints_resolved the reply's open hints it resolved. 409 brief_section_missing, scenario_missing, scenario_step_missing, scenario_step_full; 422 a Rules value out of range.

Contract:
- MCP tool `apply_agent_fix`, registry package `mcp.unibox/agent_runs`, mount `unibox.agent-memory`.
- Operation `action`, response envelope `action`.
- Flags: none.



## OpenAPI

````yaml /api-reference/unibox/openapi.yaml post /api/agent-runs/{sid}/apply-fix
openapi: 3.0.3
info:
  title: 'GetSales public contract: gs.service.unibox'
  description: >-
    The team inbox and the AI SDR: every LinkedIn and email thread in one place
    (conversations, messages, the timeline events), the manual tasks a thread
    spawns, the sender profiles the team speaks through with their LinkedIn
    account and mailboxes, and the one agent per team with its scenarios, plans
    and runs.


    GENERATED. This document is projected from the Zod MCP tool registry in
    `product/mcp/gs.mcp` (one tool per public endpoint, 1:1). Do not edit it by
    hand; edit the tool definition and regenerate with `pnpm openapi:public`.


    Surface: the public `/api` contract of `gs.service.unibox`, 125 operations.
    This is the only OpenAPI document the platform publishes. Internal
    (`/internal`) and health endpoints are deliberately absent: they are not
    part of any contract, they can change without notice, and the service source
    is their only description.


    Conventions:

    - Auth is a bearer JWT, optionally narrowed by the `Team-SID` header.

    - Every success body is an MCP envelope: `success: true` plus one typed
    `operation` shape (`search`, `get`, `create`, `update`, `delete`, `metrics`,
    `group_by`, `action`), and a `meta` block with `trace_id` for support.

    - Every failure is the same `McpError` envelope with a code from a fixed
    16-code taxonomy, so a client maps errors once.

    - Lists page with `page_size` (0 to 500, default 50) plus an opaque forward
    `cursor`; `page_size: 0` returns counts only.

    - On `GET` and `DELETE`, object-valued query parameters (`filter`, `sort`)
    travel as JSON text and array-valued ones repeat as `name[]=value`.

    - The MCP-only `_meta` field (usage analytics) never reaches the backend and
    is not part of this contract.
  version: '1.0'
  contact:
    name: GetSales
    url: https://getsales.io
    email: support@getsales.io
  license:
    name: Proprietary
    url: https://getsales.io/terms
servers:
  - url: https://beta.getsales.io/unibox/v1
    description: >-
      Production (the gateway path on the beta ring; the origin is provisioned
      per DEPLOY_MAP.md)
security:
  - BearerJwt: []
    TeamSid: []
tags:
  - name: agent_answers
    description: >-
      Registry package `mcp.unibox/agent_answers`, served on MCP mount
      `unibox.knowledge`.
  - name: agent_conversation_uploads
    description: >-
      Registry package `mcp.unibox/agent_conversation_uploads`, served on MCP
      mount `unibox.agent-memory`.
  - name: agent_examples
    description: >-
      Registry package `mcp.unibox/agent_examples`, served on MCP mount
      `unibox.agent-memory`.
  - name: agent_hints
    description: >-
      Registry package `mcp.unibox/agent_hints`, served on MCP mount
      `unibox.agent-memory`.
  - name: agent_plans
    description: >-
      Registry package `mcp.unibox/agent_plans`, served on MCP mount
      `unibox.agent`.
  - name: agent_runs
    description: >-
      Registry package `mcp.unibox/agent_runs`, served on MCP mount
      `unibox.agent-memory`.
  - name: agent_scenarios
    description: >-
      Registry package `mcp.unibox/agent_scenarios`, served on MCP mount
      `unibox.agent`.
  - name: agent_source_parses
    description: >-
      Registry package `mcp.unibox/agent_source_parses`, served on MCP mount
      `unibox.knowledge`.
  - name: agent_sources
    description: >-
      Registry package `mcp.unibox/agent_sources`, served on MCP mount
      `unibox.knowledge`.
  - name: agent_tests
    description: >-
      Registry package `mcp.unibox/agent_tests`, served on MCP mount
      `unibox.agent-memory`.
  - name: agents
    description: >-
      Registry package `mcp.unibox/agents`, served on MCP mount
      `unibox.website`.
  - name: conversation_events
    description: >-
      Registry package `mcp.unibox/conversation_events`, served on MCP mount
      `unibox.inbox`.
  - name: conversations
    description: >-
      Registry package `mcp.unibox/conversations`, served on MCP mount
      `unibox.inbox`.
  - name: messages
    description: >-
      Registry package `mcp.unibox/messages`, served on MCP mount
      `unibox.inbox`.
  - name: sender_profiles
    description: >-
      Registry package `mcp.unibox/sender_profiles`, served on MCP mount
      `unibox.sender-profiles`.
  - name: tasks
    description: Registry package `mcp.unibox/tasks`, served on MCP mount `unibox.inbox`.
  - name: timeline
    description: >-
      Registry package `mcp.unibox/timeline`, served on MCP mount
      `unibox.inbox`.
paths:
  /api/agent-runs/{sid}/apply-fix:
    post:
      tags:
        - agent_runs
      summary: Add agent reply fix
      description: >-
        Add the fix route_agent_fix drafted, as drafted or edited, through its
        place's own verb: the answer to Knowledge, the golden reply, the Brief
        line, the voice line, the Rules field, the line under the step's
        instructions. result.applied says what was added and what stood before
        (for Undo through the place's own verb); result.hints_resolved the
        reply's open hints it resolved. 409 brief_section_missing,
        scenario_missing, scenario_step_missing, scenario_step_full; 422 a Rules
        value out of range.


        Contract:

        - MCP tool `apply_agent_fix`, registry package `mcp.unibox/agent_runs`,
        mount `unibox.agent-memory`.

        - Operation `action`, response envelope `action`.

        - Flags: none.
      operationId: apply_agent_fix
      parameters:
        - name: sid
          in: path
          required: true
          description: >-
            The run whose reply the fix is about (ub_rn_…): a row of the
            Analyzer's log, from search_agent_runs.
          schema:
            type: string
            minLength: 18
            maxLength: 18
            pattern: ^ub_rn_
            description: >-
              The run whose reply the fix is about (ub_rn_…): a row of the
              Analyzer's log, from search_agent_runs.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplyAgentFixRequest'
      responses:
        '200':
          description: '`action` success envelope.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyAgentFixResponse'
        4XX:
          $ref: '#/components/responses/McpClientError'
        5XX:
          $ref: '#/components/responses/McpServerError'
components:
  schemas:
    ApplyAgentFixRequest:
      type: object
      description: Request body of `apply_agent_fix`.
      properties:
        proposal:
          anyOf:
            - type: object
              properties:
                place:
                  type: string
                  enum:
                    - knowledge
                title:
                  type: string
                  minLength: 1
                  maxLength: 120
                  description: >-
                    The question leads ask, as they put it, which the answer
                    answers (1..120 chars).
                text:
                  type: string
                  minLength: 1
                  maxLength: 1200
                  description: >-
                    The answer: plain sentences that stand on their own (1..1200
                    chars).
              required:
                - place
                - title
                - text
            - type: object
              properties:
                place:
                  type: string
                  enum:
                    - golden_set
                situation:
                  type: string
                  minLength: 1
                  maxLength: 2000
                  description: >-
                    What the lead wrote, the message the reply answered (1..2000
                    chars).
                answer:
                  type: string
                  minLength: 1
                  maxLength: 2000
                  description: >-
                    The reply as it should have gone, exactly as it would go out
                    (1..2000 chars).
              required:
                - place
                - situation
                - answer
            - type: object
              properties:
                place:
                  type: string
                  enum:
                    - brief
                section:
                  type: string
                  minLength: 1
                  maxLength: 300
                  description: >-
                    The Brief's section the line goes under, by its own heading
                    as route_agent_fix named it.
                line:
                  type: string
                  minLength: 1
                  maxLength: 300
                  description: >-
                    The line added at the end of that section, one or two plain
                    sentences (1..300 chars).
              required:
                - place
                - section
                - line
            - type: object
              properties:
                place:
                  type: string
                  enum:
                    - voice
                line:
                  type: string
                  minLength: 1
                  maxLength: 16
                  description: >-
                    Which of the voice's four lines the fix sets: length,
                    questions, register or sign_off (AgentVoiceValue::LINES, a
                    list on the Value, not an enum).
                text:
                  type: string
                  minLength: 1
                  maxLength: 160
                  description: >-
                    The whole line as it should read from now on, in a few words
                    to the agent (1..160 chars); set and pinned as
                    update_agent_voice sets it.
              required:
                - place
                - line
                - text
            - type: object
              properties:
                place:
                  type: string
                  enum:
                    - rules
                field:
                  type: string
                  minLength: 1
                  maxLength: 64
                  description: >-
                    The Rules field by its dotted path as route_agent_fix named
                    it: reply_words.linkedin.max, meeting_ask,
                    reply_delay_minutes.min, quiet_hours.from, weekends,
                    followups, followup_days, checks.stop_words and the rest of
                    get_agent_rules.
                value:
                  anyOf:
                    - type: string
                    - type: number
                    - type: boolean
                  description: >-
                    The new value within what the field takes (a whole number in
                    its range, true or false, a choice of the enum, a time as
                    HH:MM); the Rules refuse one outside it (422).
              required:
                - place
                - field
                - value
            - type: object
              properties:
                place:
                  type: string
                  enum:
                    - scenario
                scenario:
                  type: string
                  minLength: 1
                  maxLength: 64
                  description: >-
                    The scenario the line goes on: a platform scenario's key
                    (info_request) or the team's own scenario's sid (ub_sc_…),
                    as route_agent_fix named it.
                step:
                  type: string
                  minLength: 1
                  maxLength: 32
                  description: >-
                    The id of the step the line goes on (reply, playbook,
                    nudge…), one of the scenario's steps as route_agent_fix
                    listed them.
                line:
                  type: string
                  minLength: 1
                  maxLength: 300
                  description: >-
                    The instruction added under the step's instructions, one or
                    two plain sentences to the agent (1..300 chars).
              required:
                - place
                - scenario
                - step
                - line
          description: >-
            route_agent_fix's proposal, as the person left it: { place:
            "knowledge", title, text }, { "golden_set", situation, answer }, {
            "brief", section, line }, { "voice", line, text }, { "rules", field,
            value }, { "scenario", scenario, step, line }
      required:
        - proposal
    ApplyAgentFixResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
        operation:
          type: string
          enum:
            - action
        action:
          type: string
          description: kebab-case verb; matches the route segment.
        item: {}
        result:
          type: object
          properties:
            applied:
              type: object
              properties:
                place:
                  type: string
                  enum:
                    - knowledge
                    - golden_set
                    - brief
                    - voice
                    - rules
                    - scenario
                  description: Where it was added.
                sid:
                  type: string
                  nullable: true
                  description: >-
                    The answer (ub_an_…) or the golden row (ub_eg_…) it became;
                    scenario: the scenario's key or sid the line went on; null
                    for a Brief line, a voice line and a Rules field.
                section:
                  type: string
                  nullable: true
                  description: >-
                    Where inside the place: brief: the section the line went
                    under, by its heading; voice: the line set (length,
                    questions, register, sign_off); rules: the field's path;
                    scenario: the step's id; null otherwise.
                line:
                  type: string
                  nullable: true
                  description: >-
                    What was added, as words: brief and scenario: the line;
                    voice: the line's text; rules: the value (on or off for a
                    switch); null otherwise.
                was:
                  anyOf:
                    - type: string
                    - type: number
                    - type: boolean
                    - {}
                  description: >-
                    What stood before, for Undo: voice: the line's text (null
                    when none, so Undo lets the line go with
                    update_agent_voice); rules: the value before (put back with
                    update_agent_rules); null otherwise.
              required:
                - place
                - sid
                - section
                - line
                - was
              description: >-
                What was added. It is taken back through the place's own verbs:
                delete_agent_answer, delete_agent_example, update_agent with the
                Brief, update_agent_voice, update_agent_rules,
                update_agent_scenario with the step's instructions without the
                line.
            hints_resolved:
              type: array
              items:
                type: string
              description: >-
                The hints (ub_hn_…) the fix resolved (block AC7, 2026-10-27):
                the open ones of the place the reply hit, Knowledge for a
                missing answer, the Golden set for a missing dialogue, resolved
                by what the fix became with this run named on the hint's
                history; [] otherwise.
          required:
            - applied
            - hints_resolved
        meta:
          type: object
          properties:
            trace_id:
              type: string
              description: UUID v7; same 128-bit value as the X-Trace-Id header.
            span_id:
              type: string
              pattern: ^[0-9a-f]{16}$
              description: 16 hex chars, root span of this request.
            timestamp:
              type: string
              description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
            duration_ms:
              type: integer
              minimum: 0
              description: Server-side wall clock.
            team_sid:
              type: string
              nullable: true
              description: >-
                The team this call ran in (the token team, or the team_sid
                override). Null when unauthenticated; absent from pre-2026-08-20
                backends.
            actor_type:
              type: string
              nullable: true
              description: >-
                user | agent | api_key | system. Null when unauthenticated;
                absent from pre-2026-08-20 backends.
          required:
            - trace_id
            - span_id
            - timestamp
            - duration_ms
      required:
        - success
        - operation
        - action
        - item
        - result
        - meta
    McpError:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - validation_failed
                - nothing_to_update
                - not_found
                - relation_not_found
                - invalid_transition
                - limit_exceeded
                - payment_required
                - duplicate_rejected
                - conflict
                - delete_blocked
                - unauthorized
                - forbidden
                - rate_limited
                - internal_error
                - service_unavailable
                - not_implemented
            message:
              type: string
            recoverable:
              type: boolean
            suggestion:
              type: string
            field_errors:
              type: object
              additionalProperties:
                type: array
                items:
                  type: object
                  properties:
                    rule:
                      type: string
                    message:
                      type: string
                  required:
                    - rule
                    - message
            blockers:
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    description: >-
                      Machine-readable blocker type (active_flow, pending_tasks,
                      …).
                  severity:
                    type: string
                    enum:
                      - hard
                      - soft
                    description: >-
                      hard = external action required; soft = acknowledge is
                      enough.
                  description:
                    type: string
                  entity_sid:
                    type: string
                    nullable: true
                  count:
                    type: integer
                  resolution:
                    type: string
                    description: 'Hard: tool name to call. Soft: code for acknowledge[].'
                  resolution_hint:
                    type: string
                required:
                  - type
                  - severity
                  - description
                  - entity_sid
                  - resolution
                  - resolution_hint
            context:
              type: object
              additionalProperties: {}
          required:
            - code
            - message
            - recoverable
        meta:
          type: object
          properties:
            trace_id:
              type: string
              description: UUID v7; same 128-bit value as the X-Trace-Id header.
            span_id:
              type: string
              pattern: ^[0-9a-f]{16}$
              description: 16 hex chars, root span of this request.
            timestamp:
              type: string
              description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
            duration_ms:
              type: integer
              minimum: 0
              description: Server-side wall clock.
            team_sid:
              type: string
              nullable: true
              description: >-
                The team this call ran in (the token team, or the team_sid
                override). Null when unauthenticated; absent from pre-2026-08-20
                backends.
            actor_type:
              type: string
              nullable: true
              description: >-
                user | agent | api_key | system. Null when unauthenticated;
                absent from pre-2026-08-20 backends.
          required:
            - trace_id
            - span_id
            - timestamp
            - duration_ms
      required:
        - success
        - error
  responses:
    McpClientError:
      description: >-
        MCP error envelope. `error.code` is one of validation_failed,
        nothing_to_update, not_found, relation_not_found, invalid_transition,
        limit_exceeded, payment_required, duplicate_rejected, conflict,
        delete_blocked, unauthorized, forbidden, rate_limited, not_implemented.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/McpError'
    McpServerError:
      description: >-
        MCP error envelope with `error.code` internal_error or
        service_unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/McpError'
  securitySchemes:
    BearerJwt:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Access token issued by gs.service.id. Its `access_identity` claim
        carries `team_sid`, `actor_sid` and `actor_type`, and that team scope is
        authoritative.
    TeamSid:
      type: apiKey
      in: header
      name: Team-SID
      description: >-
        Team scope for tokens that do not carry one. Ignored when the token
        already names a team.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.