Skip to content

PATCH /v1/harnesses/{harness_id}

PATCH
/v1/harnesses/{harness_id}
curl --request PATCH \
--url https://app.everruns.com/api/v1/harnesses/example \
--header 'Content-Type: application/json' \
--data '{ "capabilities": [ { "config": {}, "ref": "current_time" }, { "config": {}, "ref": "web_fetch" } ], "default_model_id": "model_01933b5a00007000800000000000001", "description": "Research harness with web tools", "display_name": "Updated Research Harness", "initial_files": [ { "content": "Cite sources verbatim.\n", "path": "INSTRUCTIONS.md" } ], "mcpServers": { "additionalProperty": { "auth_mode": "none", "headers": { "additionalProperty": "example" }, "oauth_provider_id": "example", "tool_discovery": true, "type": "http", "url": "example" } }, "name": "updated-research", "network_access": { "allowed": [ "*.example.com", "https://api.acme.com/" ], "blocked": [ "169.254.169.254" ] }, "parent_harness_id": "example", "status": "active", "system_prompt": "You are a research assistant. Cite sources verbatim.", "tags": [ "research", "web-tools" ] }'
harness_id
required
string

Harness ID (prefixed)

Media type application/json

Request to update a harness. Only provided fields will be updated.

object
capabilities

Replace the capability list entirely; omit to leave unchanged.

Array<object> | null

Per-agent capability configuration

Associates a capability with an agent, including optional per-agent configuration. The config field allows the same capability to behave differently per-agent.

object
config

Per-agent configuration for this capability (capability-specific)

ref
required

Reference to the capability ID

string
Example
[
{
"config": {},
"ref": "current_time"
},
{
"config": {},
"ref": "web_fetch"
}
]
default_model_id

New default model selected when sessions inherit from this harness; omit to leave unchanged.

string | null
Example
model_01933b5a00007000800000000000001
description

Human-readable description. Safe to render in user-facing messages.

string | null
Example
Research harness with web tools
display_name

Human-readable display name.

string | null
Example
Updated Research Harness
initial_files

Replace the initial-files list entirely; omit to leave unchanged.

Array<object> | null

Starter file copied into a new session from an agent or harness.

object
content
required

File content: plain text or base64-encoded binary.

string
encoding

Content encoding: text or base64.

string
is_readonly

Prevent session-side edits or deletes when true.

boolean
path
required

Absolute path within the session workspace. /workspace prefix is accepted.

string
Example
[
{
"content": "Cite sources verbatim.\n",
"path": "INSTRUCTIONS.md"
}
]
mcpServers
One of:
null
name

Name, unique per org.

string | null
Example
updated-research
network_access
One of:
null
parent_harness_id

New parent harness for inheritance. Outer None leaves unchanged; inner None removes inheritance (becomes a root harness).

string | null
status
One of:
null
system_prompt

New system prompt the harness contributes to sessions; omit to leave unchanged.

string | null
Example
You are a research assistant. Cite sources verbatim.
tags

Replace the tag list entirely; omit to leave unchanged.

Array<string> | null
Example
[
"research",
"web-tools"
]

Harness updated

Media type application/json

Wrapper that adds API and UI links to a serialized resource.

Uses self_url (not url) for the API link to avoid collision with resources that already have a url field (e.g. McpServer).

object
archived_at

Timestamp when the harness was archived.

string | null format: date-time
capabilities

Capabilities enabled for this harness with per-harness configuration.

Array<object>

Per-agent capability configuration

Associates a capability with an agent, including optional per-agent configuration. The config field allows the same capability to behave differently per-agent.

object
config

Per-agent configuration for this capability (capability-specific)

ref
required

Reference to the capability ID

string
created_at
required

Timestamp when the harness was created.

string format: date-time
default_model_id

Default LLM model ID for this harness. Lowest priority in chain: controls > session > agent > harness.

string | null
deleted_at

Timestamp when the harness was deleted.

string | null format: date-time
description

Human-readable description of what the harness does.

string | null
display_name

Human-readable display name shown in UI.

string | null
id
required

Unique identifier for the harness (format: harness_{32-hex}).

string
initial_files

Starter files copied into each new session for this harness.

Array<object>

Starter file copied into a new session from an agent or harness.

object
content
required

File content: plain text or base64-encoded binary.

string
encoding

Content encoding: text or base64.

string
is_readonly

Prevent session-side edits or deletes when true.

boolean
path
required

Absolute path within the session workspace. /workspace prefix is accepted.

string
is_built_in

Whether this harness is built-in (system-managed, readonly). Built-in harnesses are provisioned during org initialization and cannot be modified or deleted via the API. Users can copy them.

boolean
mcpServers

Remote MCP servers scoped to this harness and inherited by descendant layers.

object
key
additional properties

Session-, agent-, or harness-scoped remote MCP server configuration.

This intentionally mirrors the mcpServers object shape used by common MCP client config files while staying within Everruns’ current remote-HTTP-only support.

object
auth_mode

Authentication mode used when executing tools from this scoped server.

string
Allowed values: none api_key o_auth
headers

Additional HTTP headers sent on MCP requests.

object
key
additional properties
string
oauth_provider_id

Provider id used to resolve a user-scoped bearer token.

string | null
tool_discovery

Whether to discover tool definitions live from this server.

boolean
type

MCP transport type. Only remote HTTP is supported today.

string
Allowed values: http
url
required

URL of the remote MCP server endpoint.

string
name
required

Name, unique per org (e.g. “generic”).

string
network_access
One of:
null
parent_harness_id

Optional parent harness that this harness inherits from.

string | null
status
required

Current lifecycle status of the harness.

string
Allowed values: active archived deleted
system_prompt
required

System prompt that defines the harness’s base behavior. Forms the foundation of the prompt stack.

string
tags

Tags for organizing and filtering harnesses.

Array<string>
updated_at
required

Timestamp when the harness was last updated.

string format: date-time
self_url
required

Full API endpoint URL for this resource.

string
ui_link
required

Alias for view_url, used by command and MCP outputs.

string
view_url
required

Full UI URL for viewing this resource.

string
Example
{
"default_model_id": "model_01933b5a00007000800000000000001",
"id": "harness_01933b5a00007000800000000000001",
"mcpServers": {
"additionalProperty": {
"auth_mode": "none",
"type": "http"
}
},
"network_access": {
"allowed": [
"*.example.com",
"https://api.acme.com/"
],
"blocked": [
"169.254.169.254"
]
},
"parent_harness_id": "harness_01933b5a000070008000000000000602",
"status": "active"
}

Invalid input

Media type application/json

Standard error response.

Wire shape is RFC 9457 Problem Details: every error response includes title and status, and may include detail, code, allowed_actions, retry_after_seconds, instance, and type. The content type is rewritten to application/problem+json by [problem_json_content_type].

object
allowed_actions

Recovery actions the caller can take next.

Array<object>

Agent-actionable recovery hint attached to an error response.

object
hint

Short, agent-readable hint (e.g. “Shorten ‘name’ to <= 200 chars.”).

string | null
href

Optional absolute or relative URL the caller may invoke directly.

string | null
operation_id

OpenAPI operationId the caller should invoke to recover.

string | null
rel
required

Link relation describing the action (e.g. retry, get-existing, unarchive, retry-later).

string
code

Stable, machine-readable error code (snake_case).

string | null
detail

Human-readable explanation specific to this occurrence.

string | null
instance

Request URI for this occurrence.

string | null
retry_after_seconds

Seconds the caller should wait before retrying (429 / transient 503).

integer | null format: int32
status
required

HTTP status code; mirrors the response status line.

integer format: int32
title
required

Short, human-readable summary of the problem (e.g. “Not Found”).

string
type

RFC 9457 problem type URI. Optional; identifies the problem class.

string | null
Example generated
{
"allowed_actions": [
{
"hint": "example",
"href": "example",
"operation_id": "example",
"rel": "example"
}
],
"code": "example",
"detail": "example",
"instance": "example",
"retry_after_seconds": 1,
"status": 1,
"title": "example",
"type": "example"
}

Forbidden

Media type application/json

Standard error response.

Wire shape is RFC 9457 Problem Details: every error response includes title and status, and may include detail, code, allowed_actions, retry_after_seconds, instance, and type. The content type is rewritten to application/problem+json by [problem_json_content_type].

object
allowed_actions

Recovery actions the caller can take next.

Array<object>

Agent-actionable recovery hint attached to an error response.

object
hint

Short, agent-readable hint (e.g. “Shorten ‘name’ to <= 200 chars.”).

string | null
href

Optional absolute or relative URL the caller may invoke directly.

string | null
operation_id

OpenAPI operationId the caller should invoke to recover.

string | null
rel
required

Link relation describing the action (e.g. retry, get-existing, unarchive, retry-later).

string
code

Stable, machine-readable error code (snake_case).

string | null
detail

Human-readable explanation specific to this occurrence.

string | null
instance

Request URI for this occurrence.

string | null
retry_after_seconds

Seconds the caller should wait before retrying (429 / transient 503).

integer | null format: int32
status
required

HTTP status code; mirrors the response status line.

integer format: int32
title
required

Short, human-readable summary of the problem (e.g. “Not Found”).

string
type

RFC 9457 problem type URI. Optional; identifies the problem class.

string | null
Example generated
{
"allowed_actions": [
{
"hint": "example",
"href": "example",
"operation_id": "example",
"rel": "example"
}
],
"code": "example",
"detail": "example",
"instance": "example",
"retry_after_seconds": 1,
"status": 1,
"title": "example",
"type": "example"
}

Harness not found

Media type application/json

Standard error response.

Wire shape is RFC 9457 Problem Details: every error response includes title and status, and may include detail, code, allowed_actions, retry_after_seconds, instance, and type. The content type is rewritten to application/problem+json by [problem_json_content_type].

object
allowed_actions

Recovery actions the caller can take next.

Array<object>

Agent-actionable recovery hint attached to an error response.

object
hint

Short, agent-readable hint (e.g. “Shorten ‘name’ to <= 200 chars.”).

string | null
href

Optional absolute or relative URL the caller may invoke directly.

string | null
operation_id

OpenAPI operationId the caller should invoke to recover.

string | null
rel
required

Link relation describing the action (e.g. retry, get-existing, unarchive, retry-later).

string
code

Stable, machine-readable error code (snake_case).

string | null
detail

Human-readable explanation specific to this occurrence.

string | null
instance

Request URI for this occurrence.

string | null
retry_after_seconds

Seconds the caller should wait before retrying (429 / transient 503).

integer | null format: int32
status
required

HTTP status code; mirrors the response status line.

integer format: int32
title
required

Short, human-readable summary of the problem (e.g. “Not Found”).

string
type

RFC 9457 problem type URI. Optional; identifies the problem class.

string | null
Example generated
{
"allowed_actions": [
{
"hint": "example",
"href": "example",
"operation_id": "example",
"rel": "example"
}
],
"code": "example",
"detail": "example",
"instance": "example",
"retry_after_seconds": 1,
"status": 1,
"title": "example",
"type": "example"
}

Internal server error

Media type application/json

Standard error response.

Wire shape is RFC 9457 Problem Details: every error response includes title and status, and may include detail, code, allowed_actions, retry_after_seconds, instance, and type. The content type is rewritten to application/problem+json by [problem_json_content_type].

object
allowed_actions

Recovery actions the caller can take next.

Array<object>

Agent-actionable recovery hint attached to an error response.

object
hint

Short, agent-readable hint (e.g. “Shorten ‘name’ to <= 200 chars.”).

string | null
href

Optional absolute or relative URL the caller may invoke directly.

string | null
operation_id

OpenAPI operationId the caller should invoke to recover.

string | null
rel
required

Link relation describing the action (e.g. retry, get-existing, unarchive, retry-later).

string
code

Stable, machine-readable error code (snake_case).

string | null
detail

Human-readable explanation specific to this occurrence.

string | null
instance

Request URI for this occurrence.

string | null
retry_after_seconds

Seconds the caller should wait before retrying (429 / transient 503).

integer | null format: int32
status
required

HTTP status code; mirrors the response status line.

integer format: int32
title
required

Short, human-readable summary of the problem (e.g. “Not Found”).

string
type

RFC 9457 problem type URI. Optional; identifies the problem class.

string | null
Example generated
{
"allowed_actions": [
{
"hint": "example",
"href": "example",
"operation_id": "example",
"rel": "example"
}
],
"code": "example",
"detail": "example",
"instance": "example",
"retry_after_seconds": 1,
"status": 1,
"title": "example",
"type": "example"
}