harness-mcp-v2 0.9.2 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +456 -348
  2. package/build/config.d.ts +8 -8
  3. package/build/config.d.ts.map +1 -1
  4. package/build/config.js +11 -8
  5. package/build/config.js.map +1 -1
  6. package/build/data/schemas/index.d.ts +10 -14
  7. package/build/data/schemas/index.d.ts.map +1 -1
  8. package/build/data/schemas/index.js +24 -9
  9. package/build/data/schemas/index.js.map +1 -1
  10. package/build/data/schemas/local/agent-pipeline.d.ts +8 -0
  11. package/build/data/schemas/local/agent-pipeline.d.ts.map +1 -0
  12. package/build/data/schemas/local/agent-pipeline.js +4945 -0
  13. package/build/data/schemas/local/agent-pipeline.js.map +1 -0
  14. package/build/data/schemas/v0/pipeline.d.ts +3 -0
  15. package/build/data/schemas/v0/pipeline.d.ts.map +1 -0
  16. package/build/data/schemas/v0/pipeline.js +114344 -0
  17. package/build/data/schemas/v0/pipeline.js.map +1 -0
  18. package/build/data/schemas/v0/template.d.ts +3 -0
  19. package/build/data/schemas/v0/template.d.ts.map +1 -0
  20. package/build/data/schemas/v0/template.js +142351 -0
  21. package/build/data/schemas/v0/template.js.map +1 -0
  22. package/build/data/schemas/v0/trigger.d.ts +3 -0
  23. package/build/data/schemas/v0/trigger.d.ts.map +1 -0
  24. package/build/data/schemas/v0/trigger.js +4080 -0
  25. package/build/data/schemas/v0/trigger.js.map +1 -0
  26. package/build/data/schemas/v1/infra.d.ts +3 -0
  27. package/build/data/schemas/v1/infra.d.ts.map +1 -0
  28. package/build/data/schemas/v1/infra.js +1005 -0
  29. package/build/data/schemas/v1/infra.js.map +1 -0
  30. package/build/data/schemas/v1/inputSet.d.ts +3 -0
  31. package/build/data/schemas/v1/inputSet.d.ts.map +1 -0
  32. package/build/data/schemas/v1/inputSet.js +46 -0
  33. package/build/data/schemas/v1/inputSet.js.map +1 -0
  34. package/build/data/schemas/v1/overlayInputSet.d.ts +3 -0
  35. package/build/data/schemas/v1/overlayInputSet.d.ts.map +1 -0
  36. package/build/data/schemas/v1/overlayInputSet.js +43 -0
  37. package/build/data/schemas/v1/overlayInputSet.js.map +1 -0
  38. package/build/data/schemas/v1/pipeline.d.ts +3 -0
  39. package/build/data/schemas/v1/pipeline.d.ts.map +1 -0
  40. package/build/data/schemas/v1/pipeline.js +5227 -0
  41. package/build/data/schemas/v1/pipeline.js.map +1 -0
  42. package/build/data/schemas/v1/service.d.ts +3 -0
  43. package/build/data/schemas/v1/service.d.ts.map +1 -0
  44. package/build/data/schemas/v1/service.js +1386 -0
  45. package/build/data/schemas/v1/service.js.map +1 -0
  46. package/build/data/schemas/v1/template.d.ts +3 -0
  47. package/build/data/schemas/v1/template.d.ts.map +1 -0
  48. package/build/data/schemas/v1/template.js +5845 -0
  49. package/build/data/schemas/v1/template.js.map +1 -0
  50. package/build/data/schemas/v1/trigger.d.ts +3 -0
  51. package/build/data/schemas/v1/trigger.d.ts.map +1 -0
  52. package/build/data/schemas/v1/trigger.js +3390 -0
  53. package/build/data/schemas/v1/trigger.js.map +1 -0
  54. package/build/index.js +3 -3
  55. package/build/index.js.map +1 -1
  56. package/build/prompts/add-metric.d.ts +3 -0
  57. package/build/prompts/add-metric.d.ts.map +1 -0
  58. package/build/prompts/add-metric.js +56 -0
  59. package/build/prompts/add-metric.js.map +1 -0
  60. package/build/prompts/create-agent.d.ts.map +1 -1
  61. package/build/prompts/create-agent.js +119 -475
  62. package/build/prompts/create-agent.js.map +1 -1
  63. package/build/prompts/create-eval-suite.d.ts +3 -0
  64. package/build/prompts/create-eval-suite.d.ts.map +1 -0
  65. package/build/prompts/create-eval-suite.js +49 -0
  66. package/build/prompts/create-eval-suite.js.map +1 -0
  67. package/build/prompts/index.d.ts.map +1 -1
  68. package/build/prompts/index.js +8 -0
  69. package/build/prompts/index.js.map +1 -1
  70. package/build/prompts/run-evaluation.d.ts +3 -0
  71. package/build/prompts/run-evaluation.d.ts.map +1 -0
  72. package/build/prompts/run-evaluation.js +49 -0
  73. package/build/prompts/run-evaluation.js.map +1 -0
  74. package/build/registry/extractors.d.ts +14 -0
  75. package/build/registry/extractors.d.ts.map +1 -1
  76. package/build/registry/extractors.js +17 -0
  77. package/build/registry/extractors.js.map +1 -1
  78. package/build/registry/index.d.ts +11 -0
  79. package/build/registry/index.d.ts.map +1 -1
  80. package/build/registry/index.js +52 -5
  81. package/build/registry/index.js.map +1 -1
  82. package/build/registry/toolsets/agents.d.ts +3 -0
  83. package/build/registry/toolsets/agents.d.ts.map +1 -0
  84. package/build/registry/toolsets/agents.js +106 -0
  85. package/build/registry/toolsets/agents.js.map +1 -0
  86. package/build/registry/toolsets/ai-evals.d.ts +8 -0
  87. package/build/registry/toolsets/ai-evals.d.ts.map +1 -0
  88. package/build/registry/toolsets/ai-evals.js +1528 -0
  89. package/build/registry/toolsets/ai-evals.js.map +1 -0
  90. package/build/registry/toolsets/governance.d.ts.map +1 -1
  91. package/build/registry/toolsets/governance.js +23 -13
  92. package/build/registry/toolsets/governance.js.map +1 -1
  93. package/build/registry/toolsets/scs.d.ts.map +1 -1
  94. package/build/registry/toolsets/scs.js +2 -1
  95. package/build/registry/toolsets/scs.js.map +1 -1
  96. package/build/registry/types.d.ts +8 -1
  97. package/build/registry/types.d.ts.map +1 -1
  98. package/build/resources/pipeline-yaml.d.ts.map +1 -1
  99. package/build/resources/pipeline-yaml.js +1 -2
  100. package/build/resources/pipeline-yaml.js.map +1 -1
  101. package/build/tools/harness-diagnose.js +2 -2
  102. package/build/tools/harness-diagnose.js.map +1 -1
  103. package/build/tools/harness-list.js +1 -1
  104. package/build/tools/harness-list.js.map +1 -1
  105. package/build/tools/harness-schema.d.ts.map +1 -1
  106. package/build/tools/harness-schema.js +12 -4
  107. package/build/tools/harness-schema.js.map +1 -1
  108. package/build/tools/harness-status.js +1 -1
  109. package/build/tools/harness-status.js.map +1 -1
  110. package/build/utils/response-formatter.d.ts +2 -2
  111. package/build/utils/response-formatter.d.ts.map +1 -1
  112. package/build/utils/response-formatter.js +4 -4
  113. package/build/utils/response-formatter.js.map +1 -1
  114. package/build/utils/svg/render-png.d.ts +6 -1
  115. package/build/utils/svg/render-png.d.ts.map +1 -1
  116. package/build/utils/svg/render-png.js +7 -4
  117. package/build/utils/svg/render-png.js.map +1 -1
  118. package/package.json +5 -1
package/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  ## Harness MCP Server 2.0
2
2
 
3
- An MCP (Model Context Protocol) server that gives AI agents full access to the Harness.io platform through 10 consolidated tools and 139 resource types.
4
-
3
+ An MCP (Model Context Protocol) server that gives AI agents full access to the Harness.io platform through 10 consolidated tools and 163 resource types.
5
4
 
6
5
  ## Why Use This MCP Server
7
6
 
@@ -9,8 +8,8 @@ Most MCP servers map one tool per API endpoint. For a platform as broad as Harne
9
8
 
10
9
  This server is built differently:
11
10
 
12
- - **10 tools, 139 resource types.** A registry-based dispatch system routes `harness_list`, `harness_get`, `harness_create`, etc. to any Harness resource — pipelines, services, environments, orgs, projects, feature flags, cost data, and more. The LLM picks from 10 tools instead of hundreds.
13
- - **Full platform coverage.** 30 toolsets spanning CI/CD, GitOps, Feature Flags, Cloud Cost Management, Security Testing, Chaos Engineering, Internal Developer Portal, Software Supply Chain, Governance, Service Overrides, Visualizations, and more. Not just pipelines — the entire Harness platform.
11
+ - **10 tools, 163 resource types.** A registry-based dispatch system routes `harness_list`, `harness_get`, `harness_create`, etc. to any Harness resource — pipelines, services, environments, orgs, projects, feature flags, cost data, and more. The LLM picks from 10 tools instead of hundreds.
12
+ - **Full platform coverage.** 31 toolsets spanning CI/CD, GitOps, Feature Flags, Cloud Cost Management, Security Testing, Chaos Engineering, Internal Developer Portal, Software Supply Chain, Governance, Service Overrides, Visualizations, and more. Not just pipelines — the entire Harness platform.
14
13
  - **Multi-project workflows out of the box.** Agents discover organizations and projects dynamically — no hardcoded env vars needed. Ask "show failed executions across all projects" and the agent can navigate the full account hierarchy.
15
14
  - **27 prompt templates.** Pre-built prompts for common workflows: build & deploy apps end-to-end, debug failed pipelines, review DORA metrics, triage vulnerabilities, optimize cloud costs, audit access control, plan feature flag rollouts, review pull requests, approve pending pipelines, and more.
16
15
  - **Works everywhere.** Stdio transport for local clients (Claude Desktop, Cursor, Windsurf), HTTP transport for remote/shared deployments, Docker and Kubernetes ready.
@@ -83,6 +82,18 @@ pnpm start:http # HTTP transport
83
82
  pnpm inspect # Test with MCP Inspector
84
83
  ```
85
84
 
85
+ ### Anthropic MCP Directory bundle
86
+
87
+ The MCPB bundle manifest lives in [`mcp-directory/`](mcp-directory/), and the bundle icon is tracked at [`icon.png`](icon.png) in the repository root. Copy `mcp-directory/manifest.json` to the bundle root after `pnpm build` so the generated archive contains root-level `manifest.json`, `icon.png`, `build/`, `package.json`, and production `node_modules/`.
88
+
89
+ To keep the archive small, build MCPB packages from a staging directory:
90
+
91
+ ```bash
92
+ pnpm prepare:mcpb
93
+ ```
94
+
95
+ The staged package is written to `dist/mcpb/` with production dependencies installed using npm's flat layout.
96
+
86
97
  ### CLI Usage
87
98
 
88
99
  ```bash
@@ -100,13 +111,15 @@ Transport defaults to `stdio` if not specified. Use `http` for remote/shared dep
100
111
 
101
112
  When running in HTTP mode, the server exposes:
102
113
 
103
- | Endpoint | Method | Description |
104
- |----------|--------|-------------|
105
- | `/mcp` | `POST` | MCP JSON-RPC endpoint (initialize + session requests) |
106
- | `/mcp` | `GET` | SSE stream for server-initiated messages (progress, elicitation) |
107
- | `/mcp` | `DELETE` | Terminate an active MCP session |
108
- | `/mcp` | `OPTIONS` | CORS preflight |
109
- | `/health` | `GET` | Health check — returns `{ "status": "ok", "sessions": <count> }` |
114
+
115
+ | Endpoint | Method | Description |
116
+ | --------- | --------- | ---------------------------------------------------------------- |
117
+ | `/mcp` | `POST` | MCP JSON-RPC endpoint (initialize + session requests) |
118
+ | `/mcp` | `GET` | SSE stream for server-initiated messages (progress, elicitation) |
119
+ | `/mcp` | `DELETE` | Terminate an active MCP session |
120
+ | `/mcp` | `OPTIONS` | CORS preflight |
121
+ | `/health` | `GET` | Health check — returns `{ "status": "ok", "sessions": <count> }` |
122
+
110
123
 
111
124
  The HTTP transport runs in **session-based mode**. A new MCP session is created on `initialize`, the server returns an `mcp-session-id` header, and subsequent requests for that session must include the same header.
112
125
 
@@ -206,14 +219,14 @@ Harness also supports a hosted MCP endpoint for accounts that have the managed s
206
219
  > ```
207
220
  >
208
221
  > Find your paths with `which npx` and `which node` in a terminal, then make sure the directory containing `node` is included in the `PATH` value above. Common locations:
222
+ >
209
223
  > - **Homebrew (macOS):** `/opt/homebrew/bin/npx`
210
224
  > - **nvm:** `~/.nvm/versions/node/v20.x.x/bin/npx` (run `nvm which current` to find the exact path)
211
225
  > - **System Node:** `/usr/local/bin/npx`
212
226
 
213
227
  #### Claude Desktop (`claude_desktop_config.json`)
214
228
 
215
- <details open>
216
- <summary>npx (zero install)</summary>
229
+ npx (zero install)
217
230
 
218
231
  ```json
219
232
  {
@@ -229,10 +242,9 @@ Harness also supports a hosted MCP endpoint for accounts that have the managed s
229
242
  }
230
243
  ```
231
244
 
232
- </details>
233
245
 
234
- <details>
235
- <summary>node (local install)</summary>
246
+
247
+ node (local install)
236
248
 
237
249
  ```bash
238
250
  npm install -g harness-mcp-v2
@@ -251,35 +263,32 @@ npm install -g harness-mcp-v2
251
263
  }
252
264
  ```
253
265
 
254
- </details>
266
+
255
267
 
256
268
  #### Claude Code (via `claude mcp add`)
257
269
 
258
- <details open>
259
- <summary>npx (zero install)</summary>
270
+ npx (zero install)
260
271
 
261
272
  ```bash
262
273
  claude mcp add harness -- npx harness-mcp-v2
263
274
  ```
264
275
 
265
- </details>
266
276
 
267
- <details>
268
- <summary>node (local install)</summary>
277
+
278
+ node (local install)
269
279
 
270
280
  ```bash
271
281
  npm install -g harness-mcp-v2
272
282
  claude mcp add harness -- harness-mcp-v2
273
283
  ```
274
284
 
275
- </details>
285
+
276
286
 
277
287
  Then set `HARNESS_API_KEY` in your environment or `.env` file.
278
288
 
279
289
  #### Cursor (`.cursor/mcp.json`)
280
290
 
281
- <details open>
282
- <summary>npx (zero install)</summary>
291
+ npx (zero install)
283
292
 
284
293
  ```json
285
294
  {
@@ -295,10 +304,9 @@ Then set `HARNESS_API_KEY` in your environment or `.env` file.
295
304
  }
296
305
  ```
297
306
 
298
- </details>
299
307
 
300
- <details>
301
- <summary>node (local install)</summary>
308
+
309
+ node (local install)
302
310
 
303
311
  ```bash
304
312
  npm install -g harness-mcp-v2
@@ -317,12 +325,11 @@ npm install -g harness-mcp-v2
317
325
  }
318
326
  ```
319
327
 
320
- </details>
328
+
321
329
 
322
330
  #### Windsurf (`~/.windsurf/mcp.json`)
323
331
 
324
- <details open>
325
- <summary>npx (zero install)</summary>
332
+ npx (zero install)
326
333
 
327
334
  ```json
328
335
  {
@@ -338,10 +345,9 @@ npm install -g harness-mcp-v2
338
345
  }
339
346
  ```
340
347
 
341
- </details>
342
348
 
343
- <details>
344
- <summary>node (local install)</summary>
349
+
350
+ node (local install)
345
351
 
346
352
  ```bash
347
353
  npm install -g harness-mcp-v2
@@ -360,10 +366,9 @@ npm install -g harness-mcp-v2
360
366
  }
361
367
  ```
362
368
 
363
- </details>
364
369
 
365
- <details>
366
- <summary>Using a local build from source?</summary>
370
+
371
+ Using a local build from source?
367
372
 
368
373
  Replace the command with the path to your built `index.js`:
369
374
 
@@ -374,13 +379,14 @@ Replace the command with the path to your built `index.js`:
374
379
  }
375
380
  ```
376
381
 
377
- </details>
382
+
378
383
 
379
384
  ### MCP Gateway
380
385
 
381
386
  The Harness MCP server is fully compatible with MCP Gateways — reverse proxies that provide centralized authentication, governance, tool routing, and observability across multiple MCP servers. Since the server implements the standard MCP protocol with both stdio and HTTP transports, it works behind any MCP-compliant gateway with no code changes.
382
387
 
383
388
  **Why use a gateway?**
389
+
384
390
  - Centralized credential management — no API keys in agent configs
385
391
  - Governance & audit logging for all tool calls across teams
386
392
  - Single endpoint for agents instead of N connections to N MCP servers
@@ -512,7 +518,7 @@ The server automatically loads environment variables from a `.env` file in the p
512
518
  | `HARNESS_MAX_BODY_SIZE_MB` | No | `10` | Max HTTP request body size in MB for `http` transport |
513
519
  | `HARNESS_RATE_LIMIT_RPS` | No | `10` | Client-side request throttle (requests per second) to Harness APIs |
514
520
  | `LOG_LEVEL` | No | `info` | Log verbosity: `debug`, `info`, `warn`, `error` |
515
- | `HARNESS_TOOLSETS` | No | *(all)* | Comma-separated list of enabled toolsets (see [Toolset Filtering](#toolset-filtering)) |
521
+ | `HARNESS_TOOLSETS` | No | *(all)* | Comma-separated toolset list. Supports `+name` to add opt-in toolsets and `-name` to remove defaults (see [Toolset Filtering](#toolset-filtering)) |
516
522
  | `HARNESS_READ_ONLY` | No | `false` | Block all mutating operations (create, update, delete, execute). Only list and get are allowed. Useful for shared/demo environments |
517
523
  | `HARNESS_SKIP_ELICITATION` | No | `false` | Skip all elicitation confirmation prompts. When `true`, write and delete operations proceed without user approval — enabling fully autonomous agent workflows. See [Elicitation](#elicitation) |
518
524
  | `HARNESS_ALLOW_HTTP` | No | `false` | Allow non-HTTPS `HARNESS_BASE_URL`. By default, the server enforces HTTPS for security. Set to `true` only for local development against a non-TLS Harness instance |
@@ -536,19 +542,21 @@ The server exposes 11 MCP tools. Most API tools accept `org_id` and `project_id`
536
542
 
537
543
  **URL support:** Most API-facing tools accept a `url` parameter — paste a Harness UI URL and the server auto-extracts org, project, resource type, resource ID, pipeline ID, and execution ID. `harness_describe` does not accept `url`.
538
544
 
539
- | Tool | Description |
540
- |------|-------------|
541
- | `harness_describe` | Discover available resource types, operations, and fields. No API call — returns local registry metadata. |
542
- | `harness_schema` | Fetch exact JSON Schema definitions for creating/updating resources. Supports deep drilling via `path` parameter. |
543
- | `harness_list` | List resources of a given type with filtering, search, and pagination. |
544
- | `harness_get` | Get a single resource by its identifier. |
545
- | `harness_create` | Create a new resource. Supports inline and remote (Git-backed) pipelines. Prompts for user confirmation via [elicitation](#elicitation). |
546
- | `harness_update` | Update an existing resource. Supports inline and remote (Git-backed) pipelines. Prompts for user confirmation via [elicitation](#elicitation). |
547
- | `harness_delete` | Delete a resource. Prompts for user confirmation via [elicitation](#elicitation). Destructive. |
548
- | `harness_execute` | Execute an action on a resource (run/retry pipeline, import pipeline from Git, toggle flag, sync app). Prompts for user confirmation via [elicitation](#elicitation). For pipeline runs, use the runtime-input workflow below (supports `branch`/`tag`/`pr_number`/`commit_sha` shorthand expansion). |
549
- | `harness_search` | Search across multiple resource types in parallel with a single query. |
545
+
546
+ | Tool | Description |
547
+ | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
548
+ | `harness_describe` | Discover available resource types, operations, and fields. No API call returns local registry metadata. |
549
+ | `harness_schema` | Fetch exact JSON Schema definitions for creating/updating resources. Supports deep drilling via `path` parameter. |
550
+ | `harness_list` | List resources of a given type with filtering, search, and pagination. |
551
+ | `harness_get` | Get a single resource by its identifier. |
552
+ | `harness_create` | Create a new resource. Supports inline and remote (Git-backed) pipelines. Prompts for user confirmation via [elicitation](#elicitation). |
553
+ | `harness_update` | Update an existing resource. Supports inline and remote (Git-backed) pipelines. Prompts for user confirmation via [elicitation](#elicitation). |
554
+ | `harness_delete` | Delete a resource. Prompts for user confirmation via [elicitation](#elicitation). Destructive. |
555
+ | `harness_execute` | Execute an action on a resource (run/retry pipeline, import pipeline from Git, toggle flag, sync app). Prompts for user confirmation via [elicitation](#elicitation). For pipeline runs, use the runtime-input workflow below (supports `branch`/`tag`/`pr_number`/`commit_sha` shorthand expansion). |
556
+ | `harness_search` | Search across multiple resource types in parallel with a single query. |
550
557
  | `harness_diagnose` | Diagnose `pipeline`, `connector`, `delegate`, and `gitops_application` resources (aliases: `execution` -> `pipeline`, `gitops_app` -> `gitops_application`). For pipelines, returns stage/step timing and failure details; for connectors/delegates/GitOps apps, returns targeted health and troubleshooting signals. |
551
- | `harness_status` | Get a real-time project health dashboard — recent executions, failure rates, and deep links. |
558
+ | `harness_status` | Get a real-time project health dashboard — recent executions, failure rates, and deep links. |
559
+
552
560
 
553
561
  ### Tool Examples
554
562
 
@@ -674,25 +682,25 @@ The server exposes 11 MCP tools. Most API tools accept `org_id` and `project_id`
674
682
  Use this sequence to reduce execution-time input errors:
675
683
 
676
684
  1. **Discover required runtime inputs**
677
- - `harness_get(resource_type="runtime_input_template", resource_id="<pipeline_id>")`
678
- - The returned template shows `<+input>` placeholders that need values.
685
+ - `harness_get(resource_type="runtime_input_template", resource_id="<pipeline_id>")`
686
+ - The returned template shows `<+input>` placeholders that need values.
679
687
  2. **Choose input strategy**
680
- - **Simple variables:** pass flat key-value `inputs` (for example `{"branch":"main","env":"prod"}`).
681
- - **Complex/structural inputs:** use `input_set_ids` (CI codebase/build blocks and nested template inputs are best handled this way).
682
- - **CI codebase shorthand keys (pipeline run only):**
683
-
684
- | Shorthand key | Expanded structure |
685
- |---|---|
686
- | `branch` | `build.type=branch`, `build.spec.branch=<value>` |
687
- | `tag` | `build.type=tag`, `build.spec.tag=<value>` |
688
- | `pr_number` | `build.type=PR`, `build.spec.number=<value>` |
689
- | `commit_sha` | `build.type=commitSha`, `build.spec.commitSha=<value>` |
690
-
691
- - **Constraint:** shorthand expansion is skipped when `inputs.build` is already present (explicit `build` wins).
688
+ - **Simple variables:** pass flat key-value `inputs` (for example `{"branch":"main","env":"prod"}`).
689
+ - **Complex/structural inputs:** use `input_set_ids` (CI codebase/build blocks and nested template inputs are best handled this way).
690
+ - **CI codebase shorthand keys (pipeline run only):**
691
+
692
+ | Shorthand key | Expanded structure |
693
+ | ------------- | ------------------------------------------------------ |
694
+ | `branch` | `build.type=branch`, `build.spec.branch=<value>` |
695
+ | `tag` | `build.type=tag`, `build.spec.tag=<value>` |
696
+ | `pr_number` | `build.type=PR`, `build.spec.number=<value>` |
697
+ | `commit_sha` | `build.type=commitSha`, `build.spec.commitSha=<value>` |
698
+
699
+ - **Constraint:** shorthand expansion is skipped when `inputs.build` is already present (explicit `build` wins).
692
700
  3. **Execute the run**
693
- - `harness_execute(resource_type="pipeline", action="run", resource_id="<pipeline_id>", ...)`
701
+ - `harness_execute(resource_type="pipeline", action="run", resource_id="<pipeline_id>", ...)`
694
702
  4. **Optional: combine both**
695
- - Use `input_set_ids` for the base shape and `inputs` for simple overrides.
703
+ - Use `input_set_ids` for the base shape and `inputs` for simple overrides.
696
704
 
697
705
  If required fields are unresolved, the tool returns a pre-flight error with expected keys and suggested input sets. You can inspect available shorthand mappings with `harness_describe(resource_type="pipeline")` (`executeActions.run.inputShorthands`).
698
706
 
@@ -720,11 +728,13 @@ If required fields are unresolved, the tool returns a pre-flight error with expe
720
728
 
721
729
  Harness pipelines can be stored in three ways:
722
730
 
723
- | Mode | Description | When to use |
724
- |------|-------------|-------------|
725
- | **Inline** | Pipeline YAML stored in Harness | Default. Simplest setup, no Git required. |
731
+
732
+ | Mode | Description | When to use |
733
+ | ------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------ |
734
+ | **Inline** | Pipeline YAML stored in Harness | Default. Simplest setup, no Git required. |
726
735
  | **Remote (External Git)** | Pipeline YAML stored in GitHub, GitLab, Bitbucket, etc. | Teams using Git-backed pipeline-as-code with an external provider. |
727
- | **Remote (Harness Code)** | Pipeline YAML stored in a Harness Code repository | Teams using Harness's built-in Git hosting. |
736
+ | **Remote (Harness Code)** | Pipeline YAML stored in a Harness Code repository | Teams using Harness's built-in Git hosting. |
737
+
728
738
 
729
739
  **Create an inline pipeline (default):**
730
740
 
@@ -911,370 +921,469 @@ Harness pipelines can be stored in three ways:
911
921
 
912
922
  ## Resource Types
913
923
 
914
- 139 resource types organized across 30 toolsets. Each resource type supports a subset of CRUD operations and optional execute actions.
924
+ 163 resource types organized across 31 toolsets. Each resource type supports a subset of CRUD operations and optional execute actions.
915
925
 
916
926
  ### Platform
917
927
 
918
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
919
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
920
- | `organization` | x | x | x | x | x | |
921
- | `project` | x | x | x | x | x | |
928
+
929
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
930
+ | -------------- | ---- | --- | ------ | ------ | ------ | --------------- |
931
+ | `organization` | x | x | x | x | x | |
932
+ | `project` | x | x | x | x | x | |
933
+
922
934
 
923
935
  ### Pipelines
924
936
 
925
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
926
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
927
- | `pipeline` | x | x | x | x | x | `run`, `retry` |
928
- | `pipeline_v1` **(Alpha)** | x | x | x | x | x | `run` |
929
- | `execution` | x | x | | | | `interrupt` |
930
- | `trigger` | x | x | x | x | x | |
931
- | `pipeline_summary` | | x | | | | |
932
- | `input_set` | x | x | x | x | x | |
933
- | `runtime_input_template` | | x | | | | |
934
- | `approval_instance` | x | | | | | `approve`, `reject` |
937
+
938
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
939
+ | ------------------------- | ---- | --- | ------ | ------ | ------ | ------------------- |
940
+ | `pipeline` | x | x | x | x | x | `run`, `retry` |
941
+ | `pipeline_v1` **(Alpha)** | x | x | x | x | x | `run` |
942
+ | `execution` | x | x | | | | `interrupt` |
943
+ | `trigger` | x | x | x | x | x | |
944
+ | `pipeline_summary` | | x | | | | |
945
+ | `input_set` | x | x | x | x | x | |
946
+ | `runtime_input_template` | | x | | | | |
947
+ | `approval_instance` | x | | | | | `approve`, `reject` |
948
+
935
949
 
936
950
  ### AI Agents
937
951
 
952
+
938
953
  | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
939
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
940
- | `agent` | x | x | x | x | x | |
941
- | `agent_run` | x | | | | | |
954
+ | ------------- | ---- | --- | ------ | ------ | ------ | --------------- |
955
+ | `agent` | x | x | x | x | x | |
956
+ | `agent_run` | x | | | | | |
957
+
942
958
 
943
959
  ### Services
944
960
 
961
+
945
962
  | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
946
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
947
- | `service` | x | x | x | x | x | |
963
+ | ------------- | ---- | --- | ------ | ------ | ------ | --------------- |
964
+ | `service` | x | x | x | x | x | |
965
+
948
966
 
949
967
  ### Environments
950
968
 
969
+
951
970
  | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
952
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
953
- | `environment` | x | x | x | x | x | `move_configs` |
971
+ | ------------- | ---- | --- | ------ | ------ | ------ | --------------- |
972
+ | `environment` | x | x | x | x | x | `move_configs` |
973
+
954
974
 
955
975
  ### Connectors
956
976
 
957
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
958
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
959
- | `connector` | x | x | x | x | x | `test_connection` |
960
- | `connector_catalogue` | x | | | | | |
977
+
978
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
979
+ | --------------------- | ---- | --- | ------ | ------ | ------ | ----------------- |
980
+ | `connector` | x | x | x | x | x | `test_connection` |
981
+ | `connector_catalogue` | x | | | | | |
982
+
961
983
 
962
984
  ### Infrastructure
963
985
 
964
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
965
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
966
- | `infrastructure` | x | x | x | x | x | `move_configs` |
986
+
987
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
988
+ | ---------------- | ---- | --- | ------ | ------ | ------ | --------------- |
989
+ | `infrastructure` | x | x | x | x | x | `move_configs` |
990
+
967
991
 
968
992
  ### Secrets
969
993
 
994
+
970
995
  | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
971
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
972
- | `secret` | x | x | | | | |
996
+ | ------------- | ---- | --- | ------ | ------ | ------ | --------------- |
997
+ | `secret` | x | x | | | | |
998
+
973
999
 
974
1000
  ### Execution Logs
975
1001
 
976
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
977
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
978
- | `execution_log` | | x | | | | |
1002
+
1003
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1004
+ | --------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1005
+ | `execution_log` | | x | | | | |
1006
+
979
1007
 
980
1008
  ### Audit Trail
981
1009
 
1010
+
982
1011
  | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
983
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
984
- | `audit_event` | x | x | | | | |
1012
+ | ------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1013
+ | `audit_event` | x | x | | | | |
1014
+
985
1015
 
986
1016
  ### Delegates
987
1017
 
988
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
989
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
990
- | `delegate` | x | | | | | |
991
- | `delegate_token` | x | x | x | | x | `revoke`, `get_delegates` |
1018
+
1019
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1020
+ | ---------------- | ---- | --- | ------ | ------ | ------ | ------------------------- |
1021
+ | `delegate` | x | | | | | |
1022
+ | `delegate_token` | x | x | x | | x | `revoke`, `get_delegates` |
1023
+
992
1024
 
993
1025
  ### Code Repositories
994
1026
 
995
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
996
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
997
- | `repository` | x | x | x | x | | |
998
- | `branch` | x | x | x | | x | |
999
- | `commit` | x | x | | | | `diff`, `diff_stats` |
1000
- | `file_content` | | x | | | | `blame` |
1001
- | `tag` | x | | x | | x | |
1002
- | `repo_rule` | x | x | | | | |
1003
- | `space_rule` | x | x | | | | |
1027
+
1028
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1029
+ | -------------- | ---- | --- | ------ | ------ | ------ | -------------------- |
1030
+ | `repository` | x | x | x | x | | |
1031
+ | `branch` | x | x | x | | x | |
1032
+ | `commit` | x | x | | | | `diff`, `diff_stats` |
1033
+ | `file_content` | | x | | | | `blame` |
1034
+ | `tag` | x | | x | | x | |
1035
+ | `repo_rule` | x | x | | | | |
1036
+ | `space_rule` | x | x | | | | |
1037
+
1004
1038
 
1005
1039
  ### Artifact Registries
1006
1040
 
1007
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1008
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1009
- | `registry` | x | x | | | | |
1010
- | `artifact` | x | | | | | |
1011
- | `artifact_version` | x | | | | | |
1012
- | `artifact_file` | x | | | | | |
1041
+
1042
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1043
+ | ------------------ | ---- | --- | ------ | ------ | ------ | --------------- |
1044
+ | `registry` | x | x | | | | |
1045
+ | `artifact` | x | | | | | |
1046
+ | `artifact_version` | x | | | | | |
1047
+ | `artifact_file` | x | | | | | |
1048
+
1013
1049
 
1014
1050
  ### Templates
1015
1051
 
1052
+
1016
1053
  | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1017
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1018
- | `template` | x | x | x | x | x | |
1054
+ | ------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1055
+ | `template` | x | x | x | x | x | |
1056
+
1019
1057
 
1020
1058
  ### Dashboards
1021
1059
 
1022
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1023
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1024
- | `dashboard` | x | x | | | | |
1025
- | `dashboard_data` | | x | | | | |
1060
+
1061
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1062
+ | ---------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1063
+ | `dashboard` | x | x | | | | |
1064
+ | `dashboard_data` | | x | | | | |
1065
+
1026
1066
 
1027
1067
  ### Internal Developer Portal (IDP)
1028
1068
 
1029
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1030
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1031
- | `idp_entity` | x | x | | | | |
1032
- | `scorecard` | x | x | | | | |
1033
- | `scorecard_check` | x | x | | | | |
1034
- | `scorecard_stats` | | x | | | | |
1035
- | `scorecard_check_stats` | | x | | | | |
1036
- | `idp_score` | x | x | | | | |
1037
- | `idp_workflow` | x | | | | | `execute` |
1038
- | `idp_tech_doc` | x | | | | | |
1069
+
1070
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1071
+ | ----------------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1072
+ | `idp_entity` | x | x | | | | |
1073
+ | `scorecard` | x | x | | | | |
1074
+ | `scorecard_check` | x | x | | | | |
1075
+ | `scorecard_stats` | | x | | | | |
1076
+ | `scorecard_check_stats` | | x | | | | |
1077
+ | `idp_score` | x | x | | | | |
1078
+ | `idp_workflow` | x | | | | | `execute` |
1079
+ | `idp_tech_doc` | x | | | | | |
1080
+
1039
1081
 
1040
1082
  ### Pull Requests
1041
1083
 
1042
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1043
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1044
- | `pull_request` | x | x | x | x | | `merge` |
1045
- | `pr_reviewer` | x | | x | | | `submit_review` |
1046
- | `pr_comment` | x | | x | | | |
1047
- | `pr_check` | x | | | | | |
1048
- | `pr_activity` | x | | | | | |
1084
+
1085
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1086
+ | -------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1087
+ | `pull_request` | x | x | x | x | | `merge` |
1088
+ | `pr_reviewer` | x | | x | | | `submit_review` |
1089
+ | `pr_comment` | x | | x | | | |
1090
+ | `pr_check` | x | | | | | |
1091
+ | `pr_activity` | x | | | | | |
1092
+
1049
1093
 
1050
1094
  ### Feature Flags
1051
1095
 
1052
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1053
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1054
- | `fme_workspace` | x | | | | | |
1055
- | `fme_environment` | x | | | | | |
1056
- | `fme_feature_flag` | x | x | x | x | x | `kill`, `restore`, `archive`, `unarchive` |
1057
- | `fme_feature_flag_definition` | | x | | | | |
1058
- | `fme_rollout_status` | x | | | | | |
1059
- | `fme_rule_based_segment` | x | x | x | | x | |
1060
- | `fme_rule_based_segment_definition` | x | | | x | | `enable`, `disable`, `change_request` |
1061
- | `feature_flag` | x | x | x | | x | `toggle` |
1062
-
1063
- **FME (Split.io) resources** — `fme_*` resources use the Split.io API (`api.split.io`) and are scoped by workspace ID rather than org/project. Auth uses `HARNESS_API_KEY` as a Bearer token. `fme_feature_flag` supports full lifecycle management: create (requires `traffic_type_id`), list, get, update metadata, delete, and kill/restore/archive/unarchive execute actions. `fme_rule_based_segment` provides CRUD for targeting segments, while `fme_rule_based_segment_definition` manages environment-specific segment rules with enable/disable and change request approval flows. Use `feature_flag` for the Harness CF admin API which supports environment-specific definitions, create, delete, and toggle.
1096
+
1097
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1098
+ | ----------------------------------- | ---- | --- | ------ | ------ | ------ | ----------------------------------------- |
1099
+ | `fme_workspace` | x | | | | | |
1100
+ | `fme_environment` | x | | | | | |
1101
+ | `fme_feature_flag` | x | x | x | x | x | `kill`, `restore`, `archive`, `unarchive` |
1102
+ | `fme_feature_flag_definition` | | x | | | | |
1103
+ | `fme_rollout_status` | x | | | | | |
1104
+ | `fme_rule_based_segment` | x | x | x | | x | |
1105
+ | `fme_rule_based_segment_definition` | x | | | x | | `enable`, `disable`, `change_request` |
1106
+ | `feature_flag` | x | x | x | | x | `toggle` |
1107
+
1108
+
1109
+ **FME (Split.io) resources** — `fme_`* resources use the Split.io API (`api.split.io`) and are scoped by workspace ID rather than org/project. Auth uses `HARNESS_API_KEY` as a Bearer token. `fme_feature_flag` supports full lifecycle management: create (requires `traffic_type_id`), list, get, update metadata, delete, and kill/restore/archive/unarchive execute actions. `fme_rule_based_segment` provides CRUD for targeting segments, while `fme_rule_based_segment_definition` manages environment-specific segment rules with enable/disable and change request approval flows. Use `feature_flag` for the Harness CF admin API which supports environment-specific definitions, create, delete, and toggle.
1064
1110
 
1065
1111
  ### GitOps
1066
1112
 
1067
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1068
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1069
- | `gitops_agent` | x | x | | | | |
1070
- | `gitops_application` | x | x | | | | `sync` |
1071
- | `gitops_cluster` | x | x | | | | |
1072
- | `gitops_repository` | x | x | | | | |
1073
- | `gitops_applicationset` | x | x | | | | |
1074
- | `gitops_repo_credential` | x | x | | | | |
1075
- | `gitops_app_event` | x | | | | | |
1076
- | `gitops_pod_log` | | x | | | | |
1077
- | `gitops_managed_resource` | x | | | | | |
1078
- | `gitops_resource_action` | x | | | | | |
1079
- | `gitops_dashboard` | | x | | | | |
1080
- | `gitops_app_resource_tree` | | x | | | | |
1113
+
1114
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1115
+ | -------------------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1116
+ | `gitops_agent` | x | x | | | | |
1117
+ | `gitops_application` | x | x | | | | `sync` |
1118
+ | `gitops_cluster` | x | x | | | | |
1119
+ | `gitops_repository` | x | x | | | | |
1120
+ | `gitops_applicationset` | x | x | | | | |
1121
+ | `gitops_repo_credential` | x | x | | | | |
1122
+ | `gitops_app_event` | x | | | | | |
1123
+ | `gitops_pod_log` | | x | | | | |
1124
+ | `gitops_managed_resource` | x | | | | | |
1125
+ | `gitops_resource_action` | x | | | | | |
1126
+ | `gitops_dashboard` | | x | | | | |
1127
+ | `gitops_app_resource_tree` | | x | | | | |
1128
+
1081
1129
 
1082
1130
  ### Chaos Engineering
1083
1131
 
1084
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1085
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1086
- | `chaos_experiment` | x | x | | | | `run` |
1087
- | `chaos_probe` | x | x | | | | `enable`, `verify` |
1088
- | `chaos_experiment_template` | x | | | | | `create_from_template` |
1089
- | `chaos_infrastructure` | x | | | | | |
1090
- | `chaos_experiment_variable` | x | | | | | |
1091
- | `chaos_experiment_run` | x | x | | | | |
1092
- | `chaos_loadtest` | x | x | x | | x | `run`, `stop` |
1093
- | `chaos_k8s_infrastructure` | x | x | | | | `check_health` |
1094
- | `chaos_hub` | x | x | | | | |
1095
- | `chaos_fault` | x | x | | | | |
1096
- | `chaos_network_map` | x | x | | | | |
1097
- | `chaos_guard_condition` | x | x | | | | |
1098
- | `chaos_guard_rule` | x | x | | | | |
1099
- | `chaos_recommendation` | x | x | | | | |
1100
- | `chaos_risk` | x | x | | | | |
1132
+
1133
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1134
+ | --------------------------- | ---- | --- | ------ | ------ | ------ | ---------------------- |
1135
+ | `chaos_experiment` | x | x | | | | `run` |
1136
+ | `chaos_probe` | x | x | | | | `enable`, `verify` |
1137
+ | `chaos_experiment_template` | x | | | | | `create_from_template` |
1138
+ | `chaos_infrastructure` | x | | | | | |
1139
+ | `chaos_experiment_variable` | x | | | | | |
1140
+ | `chaos_experiment_run` | x | x | | | | |
1141
+ | `chaos_loadtest` | x | x | x | | x | `run`, `stop` |
1142
+ | `chaos_k8s_infrastructure` | x | x | | | | `check_health` |
1143
+ | `chaos_hub` | x | x | | | | |
1144
+ | `chaos_fault` | x | x | | | | |
1145
+ | `chaos_network_map` | x | x | | | | |
1146
+ | `chaos_guard_condition` | x | x | | | | |
1147
+ | `chaos_guard_rule` | x | x | | | | |
1148
+ | `chaos_recommendation` | x | x | | | | |
1149
+ | `chaos_risk` | x | x | | | | |
1150
+
1101
1151
 
1102
1152
  ### Cloud Cost Management (CCM)
1103
1153
 
1104
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1105
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1106
- | `cost_perspective` | x | x | x | x | x | |
1107
- | `cost_breakdown` | x | | | | | |
1108
- | `cost_timeseries` | x | | | | | |
1109
- | `cost_summary` | x | x | | | | |
1110
- | `cost_recommendation` | x | x | | | | `update_state`, `override_savings`, `create_jira_ticket`, `create_snow_ticket` |
1111
- | `cost_anomaly` | x | | | | | |
1112
- | `cost_anomaly_summary` | | x | | | | |
1113
- | `cost_category` | x | x | | | | |
1114
- | `cost_account_overview` | | x | | | | |
1115
- | `cost_filter_value` | x | | | | | |
1116
- | `cost_recommendation_stats` | | x | | | | |
1117
- | `cost_recommendation_detail` | | x | | | | |
1118
- | `cost_commitment` | | x | | | | |
1154
+
1155
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1156
+ | ---------------------------- | ---- | --- | ------ | ------ | ------ | ------------------------------------------------------------------------------ |
1157
+ | `cost_perspective` | x | x | x | x | x | |
1158
+ | `cost_breakdown` | x | | | | | |
1159
+ | `cost_timeseries` | x | | | | | |
1160
+ | `cost_summary` | x | x | | | | |
1161
+ | `cost_recommendation` | x | x | | | | `update_state`, `override_savings`, `create_jira_ticket`, `create_snow_ticket` |
1162
+ | `cost_anomaly` | x | | | | | |
1163
+ | `cost_anomaly_summary` | | x | | | | |
1164
+ | `cost_category` | x | x | | | | |
1165
+ | `cost_account_overview` | | x | | | | |
1166
+ | `cost_filter_value` | x | | | | | |
1167
+ | `cost_recommendation_stats` | | x | | | | |
1168
+ | `cost_recommendation_detail` | | x | | | | |
1169
+ | `cost_commitment` | | x | | | | |
1170
+
1119
1171
 
1120
1172
  ### Software Engineering Insights (SEI)
1121
1173
 
1122
1174
  SEI resources are consolidated for token efficiency. Use `metric` or `aspect` params for DORA, team/org-tree details, and AI insights.
1123
1175
 
1124
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1125
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1126
- | `sei_metric` | x | | | | | |
1127
- | `sei_productivity_metric` | | x | | | | |
1128
- | `sei_dora_metric` | | x | | | | Pass `metric`: deployment_frequency, change_failure_rate, mttr, lead_time, or *_drilldown |
1129
- | `sei_team` | x | x | | | | |
1130
- | `sei_team_detail` | x | | | | | Pass `aspect`: integrations, developers, integration_filters |
1131
- | `sei_org_tree` | x | x | | | | |
1132
- | `sei_org_tree_detail` | x | x | | | | Pass `aspect`: efficiency_profile, productivity_profile, business_alignment_profile, integrations, teams |
1133
- | `sei_business_alignment` | x | x | | | | Pass `aspect`: feature_metrics, feature_summary, drilldown for get |
1134
- | `sei_ai_usage` | x | x | | | | Pass `aspect`: metrics, breakdown, summary, top_languages |
1135
- | `sei_ai_adoption` | x | x | | | | Pass `aspect`: metrics, breakdown, summary |
1136
- | `sei_ai_impact` | | x | | | | Pass `aspect`: pr_velocity, rework |
1137
- | `sei_ai_raw_metric` | x | | | | | |
1176
+
1177
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1178
+ | ------------------------- | ---- | --- | ------ | ------ | ------ | -------------------------------------------------------------------------------------------------------- |
1179
+ | `sei_metric` | x | | | | | |
1180
+ | `sei_productivity_metric` | | x | | | | |
1181
+ | `sei_dora_metric` | | x | | | | Pass `metric`: deployment_frequency, change_failure_rate, mttr, lead_time, or *_drilldown |
1182
+ | `sei_team` | x | x | | | | |
1183
+ | `sei_team_detail` | x | | | | | Pass `aspect`: integrations, developers, integration_filters |
1184
+ | `sei_org_tree` | x | x | | | | |
1185
+ | `sei_org_tree_detail` | x | x | | | | Pass `aspect`: efficiency_profile, productivity_profile, business_alignment_profile, integrations, teams |
1186
+ | `sei_business_alignment` | x | x | | | | Pass `aspect`: feature_metrics, feature_summary, drilldown for get |
1187
+ | `sei_ai_usage` | x | x | | | | Pass `aspect`: metrics, breakdown, summary, top_languages |
1188
+ | `sei_ai_adoption` | x | x | | | | Pass `aspect`: metrics, breakdown, summary |
1189
+ | `sei_ai_impact` | | x | | | | Pass `aspect`: pr_velocity, rework |
1190
+ | `sei_ai_raw_metric` | x | | | | | |
1191
+
1138
1192
 
1139
1193
  ### Software Supply Chain Assurance (SCS)
1140
1194
 
1141
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1142
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1143
- | `scs_artifact_source` | x | | | | | |
1144
- | `artifact_security` | x | x | | | | |
1145
- | `scs_artifact_component` | x | | | | | |
1146
- | `scs_artifact_remediation` | | x | | | | |
1147
- | `scs_chain_of_custody` | | x | | | | |
1148
- | `scs_compliance_result` | x | | | | | |
1149
- | `code_repo_security` | x | x | | | | |
1150
- | `scs_sbom` | | x | | | | |
1195
+
1196
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1197
+ | -------------------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1198
+ | `scs_artifact_source` | x | | | | | |
1199
+ | `artifact_security` | x | x | | | | |
1200
+ | `scs_artifact_component` | x | | | | | |
1201
+ | `scs_artifact_remediation` | | x | | | | |
1202
+ | `scs_chain_of_custody` | | x | | | | |
1203
+ | `scs_compliance_result` | x | | | | | |
1204
+ | `code_repo_security` | x | x | | | | |
1205
+ | `scs_sbom` | | x | | | | |
1206
+
1151
1207
 
1152
1208
  ### Security Testing Orchestration (STO)
1153
1209
 
1154
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1155
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1156
- | `security_issue` | x | | | | | |
1157
- | `security_issue_filter` | x | | | | | |
1158
- | `security_exemption` | x | | | | | `approve`, `reject`, `promote` |
1210
+
1211
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1212
+ | ----------------------- | ---- | --- | ------ | ------ | ------ | ------------------------------ |
1213
+ | `security_issue` | x | | | | | |
1214
+ | `security_issue_filter` | x | | | | | |
1215
+ | `security_exemption` | x | | | | | `approve`, `reject`, `promote` |
1216
+
1159
1217
 
1160
1218
  ### Access Control
1161
1219
 
1162
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1163
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1164
- | `user` | x | x | | | | |
1165
- | `user_group` | x | x | x | | x | |
1166
- | `service_account` | x | x | x | | x | |
1167
- | `role` | x | x | x | | x | |
1168
- | `role_assignment` | x | | x | | | |
1169
- | `resource_group` | x | x | x | | x | |
1170
- | `permission` | x | | | | | |
1220
+
1221
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1222
+ | ----------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1223
+ | `user` | x | x | | | | |
1224
+ | `user_group` | x | x | x | | x | |
1225
+ | `service_account` | x | x | x | | x | |
1226
+ | `role` | x | x | x | | x | |
1227
+ | `role_assignment` | x | | x | | | |
1228
+ | `resource_group` | x | x | x | | x | |
1229
+ | `permission` | x | | | | | |
1230
+
1171
1231
 
1172
1232
  ### Governance
1173
1233
 
1174
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1175
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1176
- | `policy` | x | x | x | x | x | |
1177
- | `policy_set` | x | x | x | x | x | |
1178
- | `policy_evaluation` | x | x | | | | |
1234
+
1235
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1236
+ | ------------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1237
+ | `policy` | x | x | x | x | x | |
1238
+ | `policy_set` | x | x | x | x | x | |
1239
+ | `policy_evaluation` | x | x | | | | |
1240
+
1179
1241
 
1180
1242
  ### Deployment Freeze
1181
1243
 
1182
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1183
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1184
- | `freeze_window` | x | x | x | x | x | `toggle_status` |
1185
- | `global_freeze` | | x | | | | `manage` |
1244
+
1245
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1246
+ | --------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1247
+ | `freeze_window` | x | x | x | x | x | `toggle_status` |
1248
+ | `global_freeze` | | x | | | | `manage` |
1249
+
1186
1250
 
1187
1251
  ### Service Overrides
1188
1252
 
1189
- | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1190
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1191
- | `service_override` | x | x | x | x | x | |
1253
+
1254
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1255
+ | ------------------ | ---- | --- | ------ | ------ | ------ | --------------- |
1256
+ | `service_override` | x | x | x | x | x | |
1257
+
1192
1258
 
1193
1259
  ### Settings
1194
1260
 
1261
+
1195
1262
  | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1196
- |---------------|:----:|:---:|:------:|:------:|:------:|-----------------|
1197
- | `setting` | x | | | | | |
1263
+ | ------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1264
+ | `setting` | x | | | | | |
1265
+
1198
1266
 
1199
1267
  ### Visualizations
1200
1268
 
1201
1269
  Inline PNG chart visualizations rendered from Harness data. These are metadata-only resource types with no API operations — they exist so the LLM can discover available chart types via `harness_describe`. Use `include_visual=true` on supported tools (`harness_diagnose`, `harness_list`, `harness_status`) to generate charts.
1202
1270
 
1203
- | Resource Type | Description | How to Generate |
1204
- |---------------|-------------|-----------------|
1205
- | `visual_timeline` | Gantt chart of pipeline stage execution over time | `harness_diagnose` with `visual_type: "timeline"` |
1206
- | `visual_stage_flow` | DAG flowchart of pipeline stages and steps | `harness_diagnose` with `visual_type: "flow"` |
1207
- | `visual_health_dashboard` | Project health overview with status indicators | `harness_status` with `include_visual: true` |
1208
- | `visual_pie_chart` | Donut chart of execution status breakdown | `harness_list` with `visual_type: "pie"` |
1209
- | `visual_bar_chart` | Bar chart of execution counts by pipeline | `harness_list` with `visual_type: "bar"` |
1210
- | `visual_timeseries` | Daily execution trend over 30 days | `harness_list` with `visual_type: "timeseries"` |
1211
- | `visual_architecture` | Pipeline YAML architecture diagram (stages → steps) | `harness_diagnose` with `visual_type: "architecture"` |
1271
+
1272
+ | Resource Type | Description | How to Generate |
1273
+ | ------------------------- | --------------------------------------------------- | ----------------------------------------------------- |
1274
+ | `visual_timeline` | Gantt chart of pipeline stage execution over time | `harness_diagnose` with `visual_type: "timeline"` |
1275
+ | `visual_stage_flow` | DAG flowchart of pipeline stages and steps | `harness_diagnose` with `visual_type: "flow"` |
1276
+ | `visual_health_dashboard` | Project health overview with status indicators | `harness_status` with `include_visual: true` |
1277
+ | `visual_pie_chart` | Donut chart of execution status breakdown | `harness_list` with `visual_type: "pie"` |
1278
+ | `visual_bar_chart` | Bar chart of execution counts by pipeline | `harness_list` with `visual_type: "bar"` |
1279
+ | `visual_timeseries` | Daily execution trend over 30 days | `harness_list` with `visual_type: "timeseries"` |
1280
+ | `visual_architecture` | Pipeline YAML architecture diagram (stages → steps) | `harness_diagnose` with `visual_type: "architecture"` |
1281
+
1212
1282
 
1213
1283
  ## MCP Prompts
1214
1284
 
1215
1285
  ### DevOps
1216
1286
 
1217
- | Prompt | Description | Parameters |
1218
- |--------|-------------|------------|
1219
- | `build-deploy-app` | End-to-end CI/CD workflow: scan a git repo, generate CI pipeline (build & push Docker image), discover or generate K8s manifests, create CD pipeline, and deploy — with auto-retry on CI failures (up to 5 attempts) and CD failures (up to 3 attempts with user permission). On exhausted retries, provides Harness UI deep links to all created resources for manual investigation. | `repoUrl` (required), `imageName` (required), `projectId` (optional), `namespace` (optional) |
1220
- | `debug-pipeline-failure` | Analyze a failed execution: accepts an execution ID, pipeline ID, or Harness URL. Gets stage/step breakdown, failure details, delegate info, and failed step logs via `harness_diagnose`, then provides root cause analysis and suggested fixes. Automatically follows chained pipeline failures. | `executionId` (optional), `projectId` (optional) |
1221
- | `create-pipeline` | Generate a new pipeline YAML from natural language requirements, reviewing existing resources for context | `description` (required), `projectId` (optional) |
1222
- | `create-agent` | Interactively build a Harness AI agent check existing agents, gather requirements, generate agent YAML spec using the agent-pipeline schema, confirm with user, then create or update via `harness_create`/`harness_update` | `agent_name` (required), `task_description` (required), `org_id` (optional), `project_id` (optional) |
1223
- | `onboard-service` | Walk through onboarding a new service with environments and a deployment pipeline | `serviceName` (required), `projectId` (optional) |
1224
- | `dora-metrics-review` | Review DORA metrics (deployment frequency, change failure rate, MTTR, lead time) with Elite/High/Medium/Low classification and improvement recommendations | `teamRefId` (optional), `dateStart` (optional), `dateEnd` (optional) |
1225
- | `setup-gitops-application` | Guide through onboarding a GitOps application verify agent, cluster, repo, and create the application | `agentId` (required), `projectId` (optional) |
1226
- | `chaos-resilience-test` | Design a chaos experiment to test service resilience with fault injection, probes, and expected outcomes | `serviceName` (required), `projectId` (optional) |
1227
- | `feature-flag-rollout` | Plan and execute a progressive feature flag rollout across environments with safety gates | `flagIdentifier` (required), `projectId` (optional) |
1228
- | `migrate-pipeline-to-template` | Analyze an existing pipeline and extract reusable stage/step templates from it | `pipelineId` (required), `projectId` (optional) |
1229
- | `delegate-health-check` | Check delegate connectivity, health, token status, and troubleshoot infrastructure issues | `projectId` (optional) |
1230
- | `developer-portal-scorecard` | Review IDP scorecards for services and identify gaps to improve developer experience | `projectId` (optional) |
1231
- | `pending-approvals` | Find pipeline executions waiting for approval, show details, and offer to approve or reject | `projectId` (optional), `orgId` (optional), `pipelineId` (optional) |
1287
+
1288
+ | Prompt | Description | Parameters |
1289
+ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
1290
+ | `build-deploy-app` | End-to-end CI/CD workflow: scan a git repo, generate CI pipeline (build & push Docker image), discover or generate K8s manifests, create CD pipeline, and deploy with auto-retry on CI failures (up to 5 attempts) and CD failures (up to 3 attempts with user permission). On exhausted retries, provides Harness UI deep links to all created resources for manual investigation. | `repoUrl` (required), `imageName` (required), `projectId` (optional), `namespace` (optional) |
1291
+ | `debug-pipeline-failure` | Analyze a failed execution: accepts an execution ID, pipeline ID, or Harness URL. Gets stage/step breakdown, failure details, delegate info, and failed step logs via `harness_diagnose`, then provides root cause analysis and suggested fixes. Automatically follows chained pipeline failures. | `executionId` (optional), `projectId` (optional) |
1292
+ | `create-pipeline` | Generate a new pipeline YAML from natural language requirements, reviewing existing resources for context | `description` (required), `projectId` (optional) |
1293
+ | `create-agent` | Interactively build a Harness AI agent check existing agents, gather requirements, generate agent YAML spec using the agent-pipeline schema, confirm with user, then create or update via `harness_create`/`harness_update` | `agent_name` (required), `task_description` (required), `org_id` (optional), `project_id` (optional) |
1294
+ | `onboard-service` | Walk through onboarding a new service with environments and a deployment pipeline | `serviceName` (required), `projectId` (optional) |
1295
+ | `dora-metrics-review` | Review DORA metrics (deployment frequency, change failure rate, MTTR, lead time) with Elite/High/Medium/Low classification and improvement recommendations | `teamRefId` (optional), `dateStart` (optional), `dateEnd` (optional) |
1296
+ | `setup-gitops-application` | Guide through onboarding a GitOps application verify agent, cluster, repo, and create the application | `agentId` (required), `projectId` (optional) |
1297
+ | `chaos-resilience-test` | Design a chaos experiment to test service resilience with fault injection, probes, and expected outcomes | `serviceName` (required), `projectId` (optional) |
1298
+ | `feature-flag-rollout` | Plan and execute a progressive feature flag rollout across environments with safety gates | `flagIdentifier` (required), `projectId` (optional) |
1299
+ | `migrate-pipeline-to-template` | Analyze an existing pipeline and extract reusable stage/step templates from it | `pipelineId` (required), `projectId` (optional) |
1300
+ | `delegate-health-check` | Check delegate connectivity, health, token status, and troubleshoot infrastructure issues | `projectId` (optional) |
1301
+ | `developer-portal-scorecard` | Review IDP scorecards for services and identify gaps to improve developer experience | `projectId` (optional) |
1302
+ | `pending-approvals` | Find pipeline executions waiting for approval, show details, and offer to approve or reject | `projectId` (optional), `orgId` (optional), `pipelineId` (optional) |
1303
+
1232
1304
 
1233
1305
  ### FinOps
1234
1306
 
1235
- | Prompt | Description | Parameters |
1236
- |--------|-------------|------------|
1237
- | `optimize-costs` | Analyze cloud cost data, surface recommendations and anomalies, prioritized by potential savings | `projectId` (optional) |
1238
- | `cloud-cost-breakdown` | Deep-dive into cloud costs by service, environment, or cluster with trend analysis and anomaly detection | `perspectiveId` (optional), `projectId` (optional) |
1239
- | `commitment-utilization-review` | Analyze reserved instance and savings plan utilization to find waste and optimize commitments | `projectId` (optional) |
1240
- | `cost-anomaly-investigation` | Investigate cost anomalies determine root cause, impacted resources, and remediation | `projectId` (optional) |
1241
- | `rightsizing-recommendations` | Review and prioritize rightsizing recommendations, optionally create Jira or ServiceNow tickets | `projectId` (optional), `minSavings` (optional) |
1307
+
1308
+ | Prompt | Description | Parameters |
1309
+ | ------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
1310
+ | `optimize-costs` | Analyze cloud cost data, surface recommendations and anomalies, prioritized by potential savings | `projectId` (optional) |
1311
+ | `cloud-cost-breakdown` | Deep-dive into cloud costs by service, environment, or cluster with trend analysis and anomaly detection | `perspectiveId` (optional), `projectId` (optional) |
1312
+ | `commitment-utilization-review` | Analyze reserved instance and savings plan utilization to find waste and optimize commitments | `projectId` (optional) |
1313
+ | `cost-anomaly-investigation` | Investigate cost anomalies determine root cause, impacted resources, and remediation | `projectId` (optional) |
1314
+ | `rightsizing-recommendations` | Review and prioritize rightsizing recommendations, optionally create Jira or ServiceNow tickets | `projectId` (optional), `minSavings` (optional) |
1315
+
1242
1316
 
1243
1317
  ### DevSecOps
1244
1318
 
1245
- | Prompt | Description | Parameters |
1246
- |--------|-------------|------------|
1247
- | `security-review` | Review security issues across Harness resources and suggest remediations by severity | `projectId` (optional), `severity` (optional, default: `critical,high`) |
1248
- | `vulnerability-triage` | Triage security vulnerabilities across pipelines and artifacts, prioritize by severity and exploitability | `projectId` (optional), `severity` (optional) |
1249
- | `sbom-compliance-check` | Audit SBOM and compliance posture for artifacts — license risks, policy violations, component vulnerabilities | `artifactId` (optional), `projectId` (optional) |
1250
- | `supply-chain-audit` | End-to-end software supply chain security auditprovenance, chain of custody, policy compliance | `projectId` (optional) |
1251
- | `security-exemption-review` | Review pending security exemptions and make batch approval or rejection decisions | `projectId` (optional) |
1252
- | `access-control-audit` | Audit user permissions, over-privileged accounts, and role assignments to enforce least-privilege | `projectId` (optional), `orgId` (optional) |
1319
+
1320
+ | Prompt | Description | Parameters |
1321
+ | --------------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
1322
+ | `security-review` | Review security issues across Harness resources and suggest remediations by severity | `projectId` (optional), `severity` (optional, default: `critical,high`) |
1323
+ | `vulnerability-triage` | Triage security vulnerabilities across pipelines and artifacts, prioritize by severity and exploitability | `projectId` (optional), `severity` (optional) |
1324
+ | `sbom-compliance-check` | Audit SBOM and compliance posture for artifacts license risks, policy violations, component vulnerabilities | `artifactId` (optional), `projectId` (optional) |
1325
+ | `supply-chain-audit` | End-to-end software supply chain security audit provenance, chain of custody, policy compliance | `projectId` (optional) |
1326
+ | `security-exemption-review` | Review pending security exemptions and make batch approval or rejection decisions | `projectId` (optional) |
1327
+ | `access-control-audit` | Audit user permissions, over-privileged accounts, and role assignments to enforce least-privilege | `projectId` (optional), `orgId` (optional) |
1328
+
1253
1329
 
1254
1330
  ### Harness Code
1255
1331
 
1256
- | Prompt | Description | Parameters |
1257
- |--------|-------------|------------|
1258
- | `code-review` | Review a pull request — analyze diff, commits, checks, and comments to provide structured feedback on bugs, security, performance, and style | `repoId` (required), `prNumber` (required), `projectId` (optional) |
1259
- | `pr-summary` | Auto-generate a PR title and description from the commit history and diff of a branch | `repoId` (required), `sourceBranch` (required), `targetBranch` (optional, default: main), `projectId` (optional) |
1260
- | `branch-cleanup` | Analyze branches in a repository and recommend stale or merged branches to delete | `repoId` (required), `projectId` (optional) |
1332
+
1333
+ | Prompt | Description | Parameters |
1334
+ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
1335
+ | `code-review` | Review a pull request — analyze diff, commits, checks, and comments to provide structured feedback on bugs, security, performance, and style | `repoId` (required), `prNumber` (required), `projectId` (optional) |
1336
+ | `pr-summary` | Auto-generate a PR title and description from the commit history and diff of a branch | `repoId` (required), `sourceBranch` (required), `targetBranch` (optional, default: main), `projectId` (optional) |
1337
+ | `branch-cleanup` | Analyze branches in a repository and recommend stale or merged branches to delete | `repoId` (required), `projectId` (optional) |
1338
+
1261
1339
 
1262
1340
  ## MCP Resources
1263
1341
 
1264
- | Resource URI | Description | MIME Type |
1265
- |--------------|-------------|-----------|
1266
- | `pipeline:///{pipelineId}` | Pipeline YAML definition | `application/x-yaml` |
1267
- | `pipeline:///{orgId}/{projectId}/{pipelineId}` | Pipeline YAML (with explicit scope) | `application/x-yaml` |
1268
- | `executions:///recent` | Last 10 pipeline execution summaries | `application/json` |
1269
- | `schema:///pipeline` | Harness pipeline JSON Schema | `application/schema+json` |
1270
- | `schema:///template` | Harness template JSON Schema | `application/schema+json` |
1271
- | `schema:///trigger` | Harness trigger JSON Schema | `application/schema+json` |
1272
- | `schema:///pipeline_v1` **(Alpha)** | Harness V1 pipeline JSON Schema (simplified stages/steps format) | `application/schema+json` |
1273
- | `schema:///agent-pipeline` | Harness AI agent pipeline JSON Schema | `application/schema+json` |
1342
+
1343
+ | Resource URI | Description | MIME Type |
1344
+ | ---------------------------------------------- | ---------------------------------------------------------------- | ------------------------- |
1345
+ | `pipeline:///{pipelineId}` | Pipeline YAML definition | `application/x-yaml` |
1346
+ | `pipeline:///{orgId}/{projectId}/{pipelineId}` | Pipeline YAML (with explicit scope) | `application/x-yaml` |
1347
+ | `executions:///recent` | Last 10 pipeline execution summaries | `application/json` |
1348
+ | `schema:///pipeline` | Harness pipeline JSON Schema | `application/schema+json` |
1349
+ | `schema:///template` | Harness template JSON Schema | `application/schema+json` |
1350
+ | `schema:///trigger` | Harness trigger JSON Schema | `application/schema+json` |
1351
+ | `schema:///pipeline_v1` **(Alpha)** | Harness V1 pipeline JSON Schema (simplified stages/steps format) | `application/schema+json` |
1352
+ | `schema:///agent-pipeline` | Harness AI agent pipeline JSON Schema | `application/schema+json` |
1353
+
1274
1354
 
1275
1355
  ## Toolset Filtering
1276
1356
 
1277
- By default, all 30 toolsets (and their 139 resource types) are enabled. Use `HARNESS_TOOLSETS` to expose only the toolsets you need. This reduces the resource types the LLM sees, improving tool selection accuracy.
1357
+ By default, 30 of 31 toolsets are enabled. One toolset (`ai-evals`) is opt-in excluded by default to avoid polluting the resource list for users who don't need it.
1358
+
1359
+ ### Enabling opt-in toolsets
1360
+
1361
+ Use the `+` prefix to add opt-in toolsets to the defaults:
1362
+
1363
+ ```bash
1364
+ # Enable ai-evals alongside all defaults
1365
+ HARNESS_TOOLSETS=+ai-evals
1366
+ ```
1367
+
1368
+ ### Removing default toolsets
1369
+
1370
+ Use the `-` prefix to exclude toolsets you don't need:
1371
+
1372
+ ```bash
1373
+ # Remove chaos and ccm from defaults
1374
+ HARNESS_TOOLSETS=-chaos,-ccm
1375
+ ```
1376
+
1377
+ ### Combining + and -
1378
+
1379
+ ```bash
1380
+ # Add ai-evals, remove chaos
1381
+ HARNESS_TOOLSETS=+ai-evals,-chaos
1382
+ ```
1383
+
1384
+ ### Explicit allowlist
1385
+
1386
+ An explicit comma-separated list (no prefixes) replaces the defaults entirely. Only the listed toolsets are enabled:
1278
1387
 
1279
1388
  ```bash
1280
1389
  # Only expose pipelines, services, and connectors
@@ -1287,7 +1396,7 @@ Available toolset names:
1287
1396
  |---------|---------------|
1288
1397
  | `platform` | organization, project |
1289
1398
  | `pipelines` | pipeline, pipeline_v1, execution, trigger, pipeline_summary, input_set, approval_instance |
1290
- | `agent-pipelines` | agent, agent_run |
1399
+ | `agents` | agent, agent_run |
1291
1400
  | `services` | service |
1292
1401
  | `environments` | environment |
1293
1402
  | `connectors` | connector, connector_catalogue |
@@ -1315,6 +1424,7 @@ Available toolset names:
1315
1424
  | `overrides` | service_override |
1316
1425
  | `settings` | setting |
1317
1426
  | `visualizations` | visual_timeline, visual_stage_flow, visual_health_dashboard, visual_pie_chart, visual_bar_chart, visual_timeseries, visual_architecture |
1427
+ | `ai-evals` **(opt-in)** | eval_dataset, eval_dataset_item, evaluation, eval_run, eval_run_item, eval_run_by_eval, eval_metric, eval_metric_set, eval_metric_set_entry, eval_suite, eval_suite_evaluation, eval_suite_run, eval_target, eval_model, eval_annotation, eval_analytics, eval_git_settings, eval_registry_item |
1318
1428
 
1319
1429
  ## Architecture
1320
1430
 
@@ -1331,8 +1441,8 @@ Available toolset names:
1331
1441
  |
1332
1442
  +--------v---------+
1333
1443
  | Registry | <-- Declarative resource definitions
1334
- | 29 Toolsets | (data files, not code)
1335
- | 137 Resource Types|
1444
+ | 31 Toolsets | (data files, not code)
1445
+ | 163 Resource Types|
1336
1446
  +--------+---------+
1337
1447
  |
1338
1448
  +--------v---------+
@@ -1347,15 +1457,10 @@ Available toolset names:
1347
1457
  ### How It Works
1348
1458
 
1349
1459
  1. **Tools** are generic verbs: `harness_list`, `harness_get`, etc. They accept a `resource_type` parameter that routes to the correct API endpoint.
1350
-
1351
1460
  2. **The Registry** maps each `resource_type` to a `ResourceDefinition` — a declarative data structure specifying the HTTP method, URL path, path/query parameter mappings, and response extraction logic.
1352
-
1353
1461
  3. **Dispatch** resolves the resource definition, builds the HTTP request (path substitution, query params, scope injection), calls the Harness API through `HarnessClient`, and extracts the relevant response data.
1354
-
1355
1462
  4. **Toolset filtering** (`HARNESS_TOOLSETS`) controls which resource definitions are loaded into the registry at startup.
1356
-
1357
1463
  5. **Deep links** are automatically appended to responses, providing direct Harness UI URLs for every resource.
1358
-
1359
1464
  6. **Compact mode** strips verbose metadata from list results, keeping only actionable fields (identity, status, type, timestamps, deep links) to minimize token usage.
1360
1465
 
1361
1466
  ### Adding a New Resource Type
@@ -1517,13 +1622,15 @@ Write tools (`harness_create`, `harness_update`, `harness_delete`, `harness_exec
1517
1622
 
1518
1623
  **Client support:**
1519
1624
 
1520
- | Client | Elicitation Support |
1521
- |--------|-------------------|
1522
- | Cursor | Yes |
1523
- | VS Code (Copilot) | Yes |
1524
- | Claude Desktop | Not yet |
1525
- | Windsurf | Not yet |
1526
- | MCP Inspector | Yes |
1625
+
1626
+ | Client | Elicitation Support |
1627
+ | ----------------- | ------------------- |
1628
+ | Cursor | Yes |
1629
+ | VS Code (Copilot) | Yes |
1630
+ | Claude Desktop | Not yet |
1631
+ | Windsurf | Not yet |
1632
+ | MCP Inspector | Yes |
1633
+
1527
1634
 
1528
1635
  Elicitation behavior varies by operation severity when client support is missing:
1529
1636
  For clients that don't support elicitation:
@@ -1568,7 +1675,6 @@ When enabled, **all** write and delete operations proceed without user confirmat
1568
1675
  - **CORS restricted to same-origin.** The HTTP transport only allows same-origin requests, preventing CSRF attacks from malicious websites targeting the MCP server on localhost.
1569
1676
  - **HTTP rate limiting.** The HTTP transport enforces 60 requests per minute per IP to prevent request flooding.
1570
1677
  - **API rate limiting.** The Harness API client enforces a 10 requests/second limit to avoid hitting upstream rate limits.
1571
-
1572
1678
  - **Pagination bounds enforced.** List queries are capped at 10,000 items total and 100 per page to prevent memory exhaustion.
1573
1679
  - **Retries with backoff.** Transient failures (HTTP 429, 5xx) are retried with exponential backoff and jitter.
1574
1680
  - **Localhost binding.** The HTTP transport binds to `127.0.0.1` by default — not accessible from the network.
@@ -1580,24 +1686,26 @@ The Harness MCP server pairs well with **[Harness Skills](https://github.com/har
1580
1686
 
1581
1687
  ## Troubleshooting & Common Pitfalls
1582
1688
 
1583
- | Symptom | Likely Cause | What to Do |
1584
- |---------|--------------|------------|
1585
- | `HARNESS_ACCOUNT_ID is required when the API key is not a PAT...` | API key is not in PAT format (`pat.<accountId>.<tokenId>.<secret>`) so account ID cannot be inferred | Set `HARNESS_ACCOUNT_ID` explicitly |
1586
- | `Unknown transport: "..."` on startup | Unsupported CLI transport arg | Use `stdio` or `http` only |
1587
- | `Invalid HARNESS_TOOLSETS: ...` on startup | One or more toolset names are not recognized | Use only names from [Toolset Filtering](#toolset-filtering) (exact match) |
1588
- | HTTP `mcp-session-id header is required...` | A session request was sent without session header | Send `initialize` first, then include `mcp-session-id` on `POST/GET/DELETE /mcp` |
1589
- | HTTP `Session not found...` | Session expired (30 min idle TTL) or already closed | Re-run `initialize` to create a new session, then retry with new header |
1590
- | HTTP `405 Method Not Allowed` on `/mcp` | Unsupported method for MCP endpoint | Use `POST`, `GET`, `DELETE`, or `OPTIONS` only |
1591
- | HTTP `Invalid request` | Invalid JSON body or request body exceeded `HARNESS_MAX_BODY_SIZE_MB` | Validate JSON payload size/shape; increase `HARNESS_MAX_BODY_SIZE_MB` if needed |
1592
- | `Unknown resource_type "..."` from tools | Resource type is misspelled or filtered out via `HARNESS_TOOLSETS` | Call `harness_describe` (with optional `search_term`) to discover valid types |
1593
- | `Missing required field "... for path parameter ..."` | A project/org scoped call is missing identifiers | Set `HARNESS_ORG`/`HARNESS_PROJECT` or pass `org_id`/`project_id` per tool call |
1594
- | `Read-only mode is enabled ... operations are not allowed` | `HARNESS_READ_ONLY=true` blocks create/update/delete/execute | Set `HARNESS_READ_ONLY=false` if write operations are intended |
1595
- | Pipeline run fails pre-flight with unresolved required inputs | Provided `inputs` did not cover required runtime placeholders | Fetch `runtime_input_template`, supply missing simple keys, or use `input_set_ids` for structural inputs |
1596
- | Pipeline CI shorthand (`branch`, `tag`, `pr_number`, `commit_sha`) did not apply | `inputs.build` was already provided, so shorthand expansion was intentionally skipped | Remove `inputs.build` to use shorthand expansion, or keep full explicit `build` structure |
1597
- | `Operation declined by user` | User declined the elicitation confirmation dialog | The user chose not to proceed verify the operation details and retry if intended |
1598
- | `body.template_yaml (or body.yaml) is required` for template create/update | Template APIs expect full YAML payload | Provide full `template_yaml` string in `body`; for deletes, pass `version_label` to delete one version (omit to delete all versions) |
1599
- | `HARNESS_BASE_URL must use HTTPS` on startup | `HARNESS_BASE_URL` is set to an HTTP URL | Use HTTPS, or set `HARNESS_ALLOW_HTTP=true` for local development |
1689
+
1690
+ | Symptom | Likely Cause | What to Do |
1691
+ | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
1692
+ | `HARNESS_ACCOUNT_ID is required when the API key is not a PAT...` | API key is not in PAT format (`pat.<accountId>.<tokenId>.<secret>`) so account ID cannot be inferred | Set `HARNESS_ACCOUNT_ID` explicitly |
1693
+ | `Unknown transport: "..."` on startup | Unsupported CLI transport arg | Use `stdio` or `http` only |
1694
+ | `Invalid HARNESS_TOOLSETS: ...` on startup | One or more toolset names are not recognized | Use only names from [Toolset Filtering](#toolset-filtering) (exact match) |
1695
+ | HTTP `mcp-session-id header is required...` | A session request was sent without session header | Send `initialize` first, then include `mcp-session-id` on `POST/GET/DELETE /mcp` |
1696
+ | HTTP `Session not found...` | Session expired (30 min idle TTL) or already closed | Re-run `initialize` to create a new session, then retry with new header |
1697
+ | HTTP `405 Method Not Allowed` on `/mcp` | Unsupported method for MCP endpoint | Use `POST`, `GET`, `DELETE`, or `OPTIONS` only |
1698
+ | HTTP `Invalid request` | Invalid JSON body or request body exceeded `HARNESS_MAX_BODY_SIZE_MB` | Validate JSON payload size/shape; increase `HARNESS_MAX_BODY_SIZE_MB` if needed |
1699
+ | `Unknown resource_type "..."` from tools | Resource type is misspelled or filtered out via `HARNESS_TOOLSETS` | Call `harness_describe` (with optional `search_term`) to discover valid types |
1700
+ | `Missing required field "... for path parameter ..."` | A project/org scoped call is missing identifiers | Set `HARNESS_ORG`/`HARNESS_PROJECT` or pass `org_id`/`project_id` per tool call |
1701
+ | `Read-only mode is enabled ... operations are not allowed` | `HARNESS_READ_ONLY=true` blocks create/update/delete/execute | Set `HARNESS_READ_ONLY=false` if write operations are intended |
1702
+ | Pipeline run fails pre-flight with unresolved required inputs | Provided `inputs` did not cover required runtime placeholders | Fetch `runtime_input_template`, supply missing simple keys, or use `input_set_ids` for structural inputs |
1703
+ | Pipeline CI shorthand (`branch`, `tag`, `pr_number`, `commit_sha`) did not apply | `inputs.build` was already provided, so shorthand expansion was intentionally skipped | Remove `inputs.build` to use shorthand expansion, or keep full explicit `build` structure |
1704
+ | `Operation declined by user` | User declined the elicitation confirmation dialog | The user chose not to proceed verify the operation details and retry if intended |
1705
+ | `body.template_yaml (or body.yaml) is required` for template create/update | Template APIs expect full YAML payload | Provide full `template_yaml` string in `body`; for deletes, pass `version_label` to delete one version (omit to delete all versions) |
1706
+ | `HARNESS_BASE_URL must use HTTPS` on startup | `HARNESS_BASE_URL` is set to an HTTP URL | Use HTTPS, or set `HARNESS_ALLOW_HTTP=true` for local development |
1707
+
1600
1708
 
1601
1709
  ## License
1602
1710
 
1603
- MIT
1711
+ MIT