Skip to main content
Glama
harness

Harness MCP Server

Official
by harness

harness_execute

Destructive

Run or retry pipelines, interrupt executions, test connectors, sync GitOps apps, and run chaos experiments. Pass a Harness URL to auto-extract identifiers; set wait:true to block until completion.

Instructions

Execute an action on a Harness resource: run/retry/interrupt pipelines, kill/restore FME feature flags, test connectors, sync GitOps apps, run chaos experiments. You can pass a Harness URL to auto-extract identifiers. Pass wait: true for pipeline run/retry to block until the execution reaches a terminal status — single tool call instead of an LLM polling loop. For HQL batch operations pass queries with resource_type='hql_query' and action='validate' or 'run'.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoHarness UI URL — auto-extracts org, project, type, and ID
bodyNoAdditional body payload for the action
waitNoFor pipeline run/retry actions: block until the execution reaches a terminal status (Success/Failed/Aborted/Errored/Expired). Server-side polling — a single tool call gives the agent the final outcome instead of an LLM polling loop. Ignored for other actions.
actionYesAction to execute (e.g. run, retry, interrupt, toggle, test_connection, sync)
inputsNoPipeline runtime inputs: key-value pairs like {branch: 'main'} (auto-resolved), or full YAML string. Check runtime_input_template first via harness_get.
org_idNoOrganization identifier (overrides default)
paramsNoAction-specific parameters. Call harness_describe for available fields per resource_type.
confirmNoSet to true to confirm the operation. Only required when the action's risk is medium_write or above (e.g. pipeline.run is high_write; hql_query.run/validate are read and need no confirmation) AND the client cannot surface a confirmation prompt — e.g. managed MCP that does not advertise elicitation, or an elicitation that fails at runtime. Has no effect for low-risk actions. Does NOT override an explicit decline from a client that completed an elicitation prompt — a user's decline is authoritative.
queriesNoBatch HQL queries — use with resource_type='hql_query' and action='validate' or 'run'. Fans out in parallel, returns per-query results.
project_idNoProject identifier (overrides default)
resource_idNoPrimary resource identifier
input_set_idsNoInput set IDs for complex pipelines. List available: harness_list(resource_type='input_set', filters={pipeline_id: '...'}).
resource_typeNoResource type with executable actions. Auto-detected from url.
resource_scopeNoScope for the operation. account: omit org/project (e.g. /v1/templates). org: org only. project: org+project. Auto-detected from url when present.
wait_timeout_secondsNoMax seconds to wait when wait=true. Default 600 (10 min). Max 7200 (2 h). When the timeout fires, returns execution_timed_out=true with the last observed status.
wait_poll_interval_secondsNoInitial poll interval when wait=true (seconds). Default 3. Backoff multiplier 1.5x, capped at 30s.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false), the description discloses concrete behavior: killing/restoring feature flags (what can be destroyed), server-side blocking wait until terminal status, URL-based auto-extraction of identifiers, and parallel HQL batch execution. The parameter-level text reinforces this with a risk/confirm model ('required when the action's risk is medium_write or above'), confirmation semantics ('Does NOT override an explicit decline'), and timeout behavior ('returns execution_timed_out=true with the last observed status'). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, all high-signal: purpose with action examples, the URL shortcut, the wait-until-terminal pattern, and the HQL special case. The broadest statement is front-loaded, followed by the two highest-value invocation tips. No filler, no restatement of schema content — appropriately compact for a tool with 16 parameters and a 60+ value resource_type enum.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a highly complex tool (16 params, large enums, nested objects, output schema present), the definition is complete: return values are covered by the output schema, the safety profile by annotations, parameter semantics by 100% schema coverage, and the non-obvious invocation patterns (wait, HQL batch, URL extraction) by the description. The pointer to harness_describe for action-specific fields closes the otherwise unbounded action/resource-type matrix.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter description is already rich (defaults, min/max, sibling references, 'Ignored for other actions'), so the baseline is 3. The main description adds value by encoding cross-parameter dependencies that prevent mis-invocation: wait only applies to pipeline run/retry, queries is only valid with resource_type='hql_query' AND action='validate' or 'run', and URL auto-extracts identifiers across the resource_type/org/project/id fields. These rules exist in the schema but are scattered; the description synthesizes them into callable patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action verb and resource — 'Execute an action on a Harness resource' — and grounds it with concrete examples: run/retry/interrupt pipelines, kill/restore FME feature flags, test connectors, sync GitOps apps, run chaos experiments. These action verbs clearly differentiate it from CRUD siblings (harness_create/update/delete) and read siblings (harness_get/list/search), so an agent can route to it without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use conditions in the main prose: 'Pass wait: true for pipeline run/retry to block until the execution reaches a terminal status — single tool call instead of an LLM polling loop' and 'For HQL batch operations pass queries with resource_type="hql_query" and action="validate" or "run"'. Prerequisite routing to siblings is embedded in parameter descriptions ('Check runtime_input_template first via harness_get', 'Call harness_describe for available fields', 'List available: harness_list'). However, it never explicitly excludes CRUD operations — the boundary with harness_create/update/delete is implied by the action examples but never stated as a when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/harness/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server