---
title: "Harness Agent"
method: POST
path: "/v1/workspaces/{workspace}/clients/{client_id}/agent"
tags: ["v1", "protected", "clients"]
---

# Harness Agent

`POST /v1/workspaces/{workspace}/clients/{client_id}/agent`

## Request

- The document declares no server URL.
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/agentarea/apis/agentarea-api/docs/v1/workspaces/:workspace/clients/:client_id/agent/post.ts> (a function with typed inputs; its response is checked against the schema)

The agent a task given to this harness client itself runs as.

Made on first use, with no instructions or tools of its own: the client's
CLI brings them. It is not listed among the workspace's agents. Like every
agent response it names its client, so a picker can show the harness.

## Path parameters

- `client_id` string, uuid, required
- `workspace` string, required: Slug of the workspace the request acts in

## Response `200`

Successful Response

- AgentResponse
  - `a2a_url` string, nullable
  - `a2ui_enabled` boolean, nullable
  - `agent_type` string
  - `answer_check` AnswerCheckPolicy: Check an agent's final answer and have the model rewrite it once if it leaks. Leaks: CJK characters, tool names and snake_case codes, stack traces, raw JSON, and (for ``language: ru``) lowercase English words in a Russian answer.
    - `enabled` boolean
    - `language` string, nullable
    - `rewrite_instruction` string, nullable
  - `client` AgentClientSummary
    - `default_model` string, nullable, required
    - `id` string, uuid, required
    - `kind` string, required
    - `name` string, required
    - `online` boolean, required
  - `client_id` string, uuid, nullable
  - `description` string, nullable
  - `id` string, uuid, required
  - `instruction` string, nullable
  - `is_catalog` boolean
  - `model_id` string, nullable
  - `name` string, required
  - `planning` boolean, nullable
  - `reasoning_effort` string, nullable
  - `reasoning_max_tokens` integer, nullable
  - `registry_item_id` string, nullable
  - `skills` object[], nullable
  - `slug` string, required
  - `status` string, required
  - `tools` union[], nullable
    - union
      - CodeToolConfig
        - `name` string, required
        - `settings` CodeToolSettings: Settings for a built-in code toolset. The model ids are model instances of the workspace, each of the kind its toolset needs: ``agentarea/media`` takes an image and/or a video model. No other toolset takes one.
          - `disabled_methods` string[], nullable
          - `image_model_id` string, nullable: agentarea/media: model instance generating images.
          - `requires_user_confirmation` boolean, nullable
          - `video_model_id` string, nullable: agentarea/media: model instance generating videos.
        - `type` 'code'
      - McpToolConfigOutput
        - `name` string, required
        - `settings` McpToolSettings: Settings for an MCP server tool (a subset of the server's tools).
          - `allowed_tools` McpToolPermission[], nullable
            - `requires_user_confirmation` boolean, nullable
            - `tool_name` string, required
          - `requires_user_confirmation` boolean, nullable
        - `type` 'mcp'
      - AgentToolConfig
        - `name` string, required
        - `settings` AgentToolSettings: Settings for an agent-to-agent (delegation) tool. ``a2a_url`` selects the *remote* transport binding; absent → same-platform direct delegation. Lives here only — A2A is a per-edge binding, not a property every tool type carries.
          - `a2a_url` string, nullable
          - `agent_id` string, nullable
          - `auth_secret_name` string, nullable: Workspace secret holding the bearer token sent to ``a2a_url``.
          - `description_override` string, nullable
          - `requires_user_confirmation` boolean, nullable
        - `type` 'agent'
      - OpenApiToolConfig
        - `name` string, required
        - `settings` OpenApiToolSettings: Settings for an OpenAPI connection tool. ``load_mode`` picks schema disclosure: "explicit" inlines every operation's schema into each LLM call (legacy); "searchable" defers them behind a ``load_tools`` meta-tool. Honored only for openapi tools — which is exactly why it lives here and nowhere else.
          - `allowed_tools` string[], nullable
          - `load_mode` 'explicit' | 'searchable', nullable
          - `openapi_connection_id` string, nullable
          - `requires_user_confirmation` boolean, nullable
        - `type` 'openapi'
  - `update_available` boolean

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-09** `1e1ab1313c55`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/agentarea/apis/agentarea-api/changes/v1/workspaces/:workspace/clients/:client_id/agent/post.md)

---

[API](https://skmtc.dev/agentarea/apis/agentarea-api.md) - [All operations](https://skmtc.dev/agentarea/apis/agentarea-api/llms.txt) - [OpenAPI document](https://skmtc.dev/agentarea/apis/agentarea-api/revisions/7a4e10cf159f?raw)
