Skip to main content
Glama

vcf-orchestrator-mcp

MCP server that lets your AI assistant work directly with VCF Operations Orchestrator (vRO) 9.x: find and read workflows, create and update actions and workflows, run them, and read executions and logs. It works with the Orchestrator embedded in VCF Automation 9 and with a standalone Orchestrator, and has been verified on VCF Automation 9.1.1.

It works with any MCP client: Claude Desktop, Claude Code, Cursor, VS Code with GitHub Copilot, and others.

๐Ÿ“– Full documentation: docs ยท ๐Ÿ“ Blog post with demo video

Quick start

  1. Install (Node.js 18.17+):

    npm install -g vcf-orchestrator-mcp
  2. Run the one-time setup. It creates a VCF Automation service account and stores its refresh token on your machine. The password is asked for with a masked prompt and never stored.

    vcf-orchestrator-mcp setup --url https://auto.example.lab --org <org name> --user <local admin> --name <service account name> --role "Organization Owner,Orchestrator Administrator" --insecure

    --org is the org name from https://<host>/tenant/<name>. The service account needs the Orchestrator Administrator role. Details and options: Setup and Service Account.

  3. Add it to your client. Setup prints this block; no password or token goes in it:

    {
      "mcpServers": {
        "vcf-orchestrator": {
          "command": "vcf-orchestrator-mcp",
          "env": {
            "VRO_URL": "https://auto.example.lab",
            "VRO_AUTH_MODE": "api-token",
            "VRO_ORG": "<org name>",
            "VRO_INSECURE": "true"
          }
        }
      }
    }

    Claude Code, Cursor and VS Code: Client Configuration.

  4. Fully restart your client, then ask: "Run vro_server_info and tell me which Orchestrator I'm connected to."

The server renews its token by itself, so you never paste tokens: Token Refresh.

Related MCP server: ObjectStack MCP Server

Tools

Tool

What it does

vro_server_info

Connectivity check: version, auth mode, token expiry

vro_find_workflows, vro_get_workflow

Find workflows, read inputs and outputs

vro_run_workflow, vro_get_execution, vro_list_executions

Run workflows with plain JSON inputs, read state, outputs and logs

vro_find_actions, vro_get_action, vro_run_action

Find, read and run actions

vro_save_action, vro_save_workflow

Create or update actions and workflows; versions are bumped automatically

vro_run_script

Run a quick ES5 snippet via a temporary action

vro_set_versions

Set or bump versions of actions and workflows

vro_delete_workflow

Delete a workflow

vro_api_search, vro_api_describe, vro_api_call

Reach the full Orchestrator REST API (303 operations)

Parameters for each: Tools Reference.

Documentation

Page

What's in it

Installation

Requirements, npm and source installs, updating

Setup and Service Account

The setup command, roles, SSO-only orgs

Client Configuration

Claude Desktop, Claude Code, Cursor, VS Code

Configuration Reference

All VRO_* variables and auth modes

Examples and Prompts

Prompts to try and worked walkthroughs

Troubleshooting

Error messages and fixes

FAQ

Common questions

Also in this repo

Development

git clone https://github.com/imtrinity94/vcf-orchestrator-mcp.git
cd vcf-orchestrator-mcp
npm install        # also builds into dist/

test-client.mjs exercises every tool over stdio against a mock or lab Orchestrator.

Releasing: pushing a v* tag publishes to npm through .github/workflows/publish.yml (npm trusted publishing, no stored token). Or run npm login and npm publish locally.

License

MIT

Available Tools

17 tools
vro_api_callA

Call any Orchestrator REST endpoint (full access โ€” GET/POST/PUT/PATCH/DELETE). Identify it by operationId (preferred, from vro_api_search) or by method + path relative to /vco/api. Inventory lists (link/attributes) are flattened into 'items' unless raw=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNoReturn the body exactly as received
bodyNoJSON body (object) or a raw string (XML/text)
pathNoe.g. /workflows/{id} or a concrete /workflows/abc-123; relative to the API base
queryNoQuery params; arrays become repeated keys (e.g. conditions: ['name~vm'])
acceptNojson (default) | xml | text | explicit media type
methodNo
headersNo
maxCharsNo
pathParamsNoValues for {placeholders} in the path
contentTypeNo
operationIdNo
includeHeadersNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful traits: full write/delete capability (destructive methods named), and the non-obvious output transformation that inventory lists are flattened into 'items' unless raw=true. Auth requirements, rate limits, and error behavior are not mentioned, so it is not complete, but the response-shaping disclosure is real value beyond the schema.

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?

Two dense sentences with zero filler; the endpoint/method scope and identification mechanism are front-loaded, and the output-shaping caveat follows immediately. Every clause carries information an agent needs.

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

Completeness4/5

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

For a 12-parameter generic passthrough with no output schema and no annotations, the description covers the essentials: what it reaches, how to target it, and how the body is shaped. It stops short of the surrounding context an agent would want (auth prerequisites, error/validation behavior, relationship to the dedicated workflow/action tools), leaving a modest gap given the tool's complexity.

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 50%, so the description must compensate, and it does for the central parameters: it explains operationId (preferred, sourced from vro_api_search), method+path relative to /vco/api, and the raw flag's effect on flattening. Several parameters (maxChars, includeHeaders, contentType, headers, body) remain undocumented in both schema and description, which keeps it short of a 5.

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?

The description states a specific verb and resource ('Call any Orchestrator REST endpoint'), enumerates the full method scope (GET/POST/PUT/PATCH/DELETE), and explicitly routes discovery to the sibling vro_api_search for operationId. An agent can distinguish this generic passthrough from the dedicated siblings without opening the schema.

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

Usage Guidelines3/5

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

It gives a clear preference rule for identifying the endpoint (operationId preferred, sourced from vro_api_search, else method+path), which is genuine usage guidance. However, it never says when to prefer the dedicated siblings (vro_run_workflow, vro_get_workflow, vro_find_workflows, etc.) over this generic caller, nor when this tool is the wrong choice. Usage is implied rather than bounded.

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

vro_api_describeA
Read-only

Show one Orchestrator API operation in detail: path/query/header parameters, request body schema ($refs resolved) and success response shape. Use before vro_api_call for anything with a body.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoHow deep to inline nested schemas (default 3)
operationIdYes

TDQS

A4.2/5.0
Behavior4/5

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

With readOnlyHint=true already declaring the safety profile, the description adds real value: it discloses that $refs are resolved in the returned body schema and specifies the success-response coverage. It stops short of stating anything about failure modes (e.g., unknown operationId) or how large a resolved schema may be.

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?

Two sentences, zero filler. The output enumeration comes first and the routing instruction second, which is the right front-loading for a lookup tool.

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

Completeness4/5

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

No output schema exists, so the description must carry the return-value burden, and it does: it names the parameter categories, the resolved body schema, and the success response shape. The only omission is the provenance of operationId, which an agent must infer from the sibling search tool.

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

Parameters3/5

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

Schema coverage is 50%: depth is documented inline ('How deep to inline nested schemas (default 3)') while operationId has no schema description. The description indirectly supports depth by advertising $refs resolution, but never explains where an operationId comes from (presumably vro_api_search), so it only partially compensates for the gap.

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?

Specific verb ('Show') plus specific resource ('one Orchestrator API operation in detail'), with an enumeration of exactly what is returned: path/query/header parameters, request body schema with $refs resolved, and success response shape. An agent can distinguish this from the sibling vro_api_search (find operations) and vro_api_call (invoke them) without opening any schema.

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?

Explicitly routes usage: 'Use before vro_api_call for anything with a body,' naming both the alternative tool and the selecting condition. No explicit when-not is given (e.g., that a bodyless GET needs no describe step), so it falls just short of the full when/when-not/alternatives bar.

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

vro_delete_workflowB
Destructive

Delete a workflow by id or exact name.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
workflowYes

TDQS

B3.1/5.0
Behavior3/5

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

The destructiveHint=true annotation already tells the agent this is a destructive operation, lowering the disclosure bar. The description usefully adds that the workflow may be resolved by an exact name rather than only an id, but says nothing about whether deletion is permanent, what dependencies or versions are affected, or what permissions are needed, and the boolean 'force' behavior is entirely undisclosed.

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

Conciseness4/5

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

A single tight sentence with the operation and identifier semantics front-loaded and no filler. It is arguably over-terse for a destructive tool, but nothing is wasted.

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

Completeness2/5

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

For a destructive, irreversible-sounding delete with an undocumented 'force' flag, no output schema, and only a destructiveHint annotation, the description omits permanence, dependency/version side effects, and auth requirements. An agent has enough to attempt the call but not enough to judge the consequences.

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

Parameters3/5

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

With 0% schema description coverage, the description carries the burden, and it does clarify the required 'workflow' parameter (id or exact name), which is more than the schema states. However, the 'force' boolean is left completely unexplained in both schema and description, so the compensation is only partial.

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

Purpose4/5

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

States a specific verb and resource ('Delete a workflow'), which clearly separates it from read-oriented siblings like vro_get_workflow and write siblings like vro_save_workflow. It adds a resolvable-identifier clause ('by id or exact name'), though it never references a sibling by name to route the agent explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives such as vro_save_workflow (which can overwrite) or vro_find_workflows (to locate a target first), and no mention of prerequisites or irreversibility. The agent must infer usage entirely from the name.

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

vro_find_actionsB
Read-only

Find Orchestrator actions by partial module or name (e.g. 'getAllVMs', 'com.vmware.library.vc'). Returns fqn module/name and id.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

B3/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this is a safe, non-mutating lookup, so the description's burden is lower. It adds useful return-shape information (fqn module/name and id) but says nothing about result ordering, truncation, or how limit interacts with results.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the action and its matching semantics, followed by the return fields. No filler; only the bare return clause is slightly clipped.

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

Completeness3/5

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

With no output schema, the description must carry return-value context; it names the returned fields but not the surrounding structure (list, ordering, whether matches are exhaustive within limit). Adequate for a simple search tool, but incomplete on result behavior.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains the semantics of 'query' (partial module or name match) with examples, which is genuinely helpful, but 'limit' is completely undocumented in both schema and description, leaving half the parameters opaque.

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

Purpose4/5

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

Specific verb+resource: 'Find Orchestrator actions by partial module or name', with concrete query examples ('getAllVMs', 'com.vmware.library.vc'). It is clear this is the search/fuzzy-match entry point, but it does not explicitly distinguish itself from siblings like vro_get_action or vro_api_search.

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

Usage Guidelines2/5

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

No statement of when to use this versus alternatives such as vro_get_action or vro_api_search. The phrase 'by partial module or name' implies fuzzy lookup, but the agent must infer that this is the discovery step preceding get/run calls.

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

vro_find_workflowsB
Read-only

Find Orchestrator workflows by (partial) name. Returns id, name, category, version, description.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoPartial name; omit to list all
limitNo
startIndexNo

TDQS

B3.3/5.0
Behavior3/5

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

The readOnlyHint=true annotation already establishes this is a safe, non-mutating read, so the description's burden is reduced. It adds the enumerated return fields (id, name, category, version, description), which is genuine value, but says nothing about result volume, paging behavior, or case sensitivity of the partial match.

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?

Two tight sentences with zero filler, front-loading the action and match mode before the return payload. Every clause carries information.

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

Completeness3/5

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

With no output schema, listing the returned fields is a necessary and well-used addition, and the search semantics are clear. But for a paginated lookup tool, the absence of any paging or result-size guidance leaves the definition adequate rather than complete.

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

Parameters2/5

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

Schema description coverage is only 33%: 'name' is documented ('Partial name; omit to list all') but 'limit' and 'startIndex' have no descriptions at all. The tool description does nothing to compensate, never explaining paging, the 500 cap, or how startIndex interacts with limit, leaving two of three parameters semantically opaque.

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

Purpose4/5

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

States a specific verb and resource ('Find Orchestrator workflows') plus the matching mode ('by (partial) name'), which distinguishes it from the id-based sibling vro_get_workflow. It does not, however, mention the near-twin vro_find_actions or explicitly contrast search vs. get, so sibling differentiation is only implied.

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

Usage Guidelines3/5

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

Usage is only implied: the word 'Find' plus 'partial name' suggests this is the discovery/lookup entry point before using vro_get_workflow or vro_run_workflow, but the description never states when to prefer it over those siblings or what prerequisites apply. No exclusions or alternative routing are provided.

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

vro_get_actionC
Read-only

Get an action's script, inputs and return type. Reference as 'module/name' or id.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations supply readOnlyHint=true, so the safety profile is covered; the description adds only the returned fields (script, inputs, return type), which is useful but thin. It says nothing about whether unknown references error out, scoping/permissions, or payload size.

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

Conciseness4/5

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

Two short, front-loaded sentences with no filler. Terse to the point of omitting needed detail, but nothing is wasted or buried.

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

Completeness3/5

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

With no output schema, the description at least names the returned fields, and annotations cover safety, so this is minimally viable. But for a lookup tool with an undocumented parameter and no error behavior described, an agent is left guessing on edge cases.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden, and it only partially does so: it gives the accepted reference formats 'module/name' or id. It does not clarify whether id is a UUID or numeric, case sensitivity, or what happens on a missing action.

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

Purpose4/5

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

States a specific verb (Get) and resource (an action), and enumerates what is returned: script, inputs, return type. It is distinguishable from vro_run_action and vro_find_actions, but does not explicitly name a sibling to differentiate from, holding it at 4 rather than 5.

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

Usage Guidelines2/5

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

No guidance on when to call this versus vro_find_actions (to locate actions) or vro_run_action (to execute one). The implicit reading is 'use this when you already know the action identity,' but that is never stated, and no exclusions or prerequisites are given.

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

vro_get_executionB
Read-only

Get a workflow execution's state, outputs and error, optionally with logs. Can also wait for it to finish.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYes
executionIdYes
includeLogsNo
waitSecondsNoWait up to N seconds for completion
includeInputsNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds some behavioral context by mentioning optional logs and the ability to wait for completion, but it does not describe limits on waiting, log volume, or behavior when the execution is already finished.

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?

The description is two compact sentences and is front-loaded with the core action. Every sentence contributes useful information without redundancy.

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

Completeness3/5

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

For a read-only get tool with no output schema, the description does explain what is returned at a high level. However, with five parameters and only 20% schema description coverage, it leaves too much parameter detail and usage guidance unstated.

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

Parameters2/5

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

Schema description coverage is only 20%, and the description only loosely covers includeLogs and waitSeconds. It does not explain workflowId, executionId, or includeInputs, leaving most parameters semantically undocumented beyond their names.

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

Purpose4/5

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

The description gives a specific verb and resource: get a workflow execution, returning state, outputs, error, and optionally logs. It also states that it can wait for completion. However, it does not explicitly differentiate itself from siblings like list_executions or run_workflow.

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

Usage Guidelines3/5

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

The description implies usage for inspecting a specific execution and notes the optional wait behavior, which is a useful scenario cue. But it does not say when to use this tool versus list_executions or other execution-related siblings, and it gives no exclusions or prerequisites.

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

vro_get_workflowA
Read-only

Get a workflow's inputs/outputs (names + types), version and description, by id or exact name.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesWorkflow id or name
includeContentNoAlso return the full workflow content (schema, scripts) โ€” can be large

TDQS

A4/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read with no side effects, so the description carries less burden. It adds that the lookup is exact-match and that returned data includes typed inputs/outputs, but says nothing about failure modes when the name is ambiguous or not found, nor about the large-payload risk that the schema mentions for includeContent.

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?

A single sentence that front-loads the verb and resource, then the payload fields, then the lookup key. No filler or redundancy.

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

Completeness4/5

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

With no output schema, the description usefully enumerates what comes back and how identifiers are resolved, and annotations cover the safety profile. Only minor gaps remain, such as behavior on ambiguous/missing names or the exclusion of full content by default.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the schema, establishing a baseline of 3. The description only reinforces that 'workflow' accepts an id or exact name and says nothing extra about includeContent beyond what the schema states.

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 verb ('Get'), resource ('a workflow'), and enumerates the returned fields (inputs/outputs names + types, version, description). This clearly separates it from vro_find_workflows (search) and vro_save_workflow (mutation).

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?

The phrase 'by id or exact name' signals this is a precise-identifier lookup rather than a search, which implicitly routes agents away from vro_find_workflows. However, it never names the alternative or states an exclusion explicitly, so usage context is clear but not fully prescriptive.

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

vro_list_executionsB
Read-only

List recent executions of a workflow (id, state, start/end, started by).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
stateNoFilter, e.g. failed | completed | running
workflowYesWorkflow id or name

TDQS

B3/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read operation. The description adds useful return-field context (id, state, start/end, started by), which matters since no output schema exists, but it does not define 'recent', the default limit, or pagination behavior.

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

Conciseness4/5

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

A single front-loaded sentence with the verb and resource first and the returned fields in parentheses. No wasted words, though it is terse to the point of omitting operational detail.

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

Completeness3/5

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

For a read-only list tool with annotations covering safety, the core purpose is conveyed. However, 'recent' is undefined, no default or maximum for limit is given, and there is no hint about how the state filter interacts with the results, which leaves real gaps for a filtering list operation.

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

Parameters2/5

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

Schema coverage is 67%, and the description's parenthetical lists returned fields rather than inputs, so it adds no meaning for the three parameters. The 'limit' parameter has no schema description and no compensating explanation in the description, leaving the agent to guess its default and cap.

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

Purpose4/5

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

States a specific verb (List) and resource (executions of a workflow), so the agent knows it retrieves execution history rather than running or fetching a single execution. It does not explicitly distinguish itself from the singular sibling vro_get_execution, but the intent is unambiguous.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no mention of alternatives such as vro_get_execution for a single run or vro_run_workflow to start one. The agent must infer the list-vs-get distinction from the name alone.

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

vro_run_actionB

Execute an action synchronously with plain JSON inputs ({inputName: value}) and return its result (converted to plain JSON), error with line number, and logs.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes'module/name' or action id
inputsNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden but does disclose meaningful behavior: synchronous execution, plain-JSON input coercion, plain-JSON result conversion, error reporting with line number, and logs. It stops short of stating permission requirements or side effects of the executed action.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, packing execution mode, input format, and return shape efficiently. Dense but not padded.

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

Completeness4/5

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

No output schema exists, so the description usefully describes the return payload (result, error with line number, logs). It is largely complete for a run tool, with the main gap being the absence of usage routing against sibling execution tools.

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

Parameters3/5

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

Schema coverage is 50%: 'action' is documented in the schema ('module/name' or action id), while 'inputs' is not. The description compensates by specifying the inputs shape ({inputName: value}), adding real meaning for the undocumented parameter, but says nothing about resolving the action identifier.

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

Purpose4/5

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

States a specific verb (Execute) and resource (action), and notes synchronous execution. It implicitly distinguishes itself from the sibling execution tools (vro_run_workflow, vro_run_script) by naming 'action', though it never explicitly contrasts them.

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

Usage Guidelines2/5

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

The description notes it runs synchronously but gives no guidance on when to choose this over vro_run_workflow, vro_run_script, or the async/execution-based tools. An agent must infer the selection criteria from the name alone.

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

vro_run_scriptA

Run an ad-hoc JavaScript snippet on Orchestrator โ€” for prototyping and quick checks. Creates a temporary action, executes it with the given inputs (available as variables), returns the 'return' value + System.log output, then deletes the action. Script must be plain ES5 (Rhino): var, function(){}, no arrow functions/let/const/template literals.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsNoVariables passed into the script
scriptYesBody of the function. Use `return x;` to return a value.
inputTypesNoOptional explicit types, e.g. {vm: 'VC:VirtualMachine'}
keepActionNoDon't delete the temp action afterwards (to inspect it)
returnTypeNoDefault 'Any'

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the temporary-action lifecycle, return value plus System.log output, and the ES5/Rhino script constraints, but omits permissions, rate limits, and potential side effects of executing arbitrary code.

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?

Three sentences, front-loaded with purpose and usage, then behavior, then constraints. Every sentence earns its place; no redundant or vague wording.

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

Completeness4/5

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

Given the absence of an output schema, the description explains the return value and System.log output. It also covers script language constraints and the temporary action lifecycle, making it largely complete, though it could mention error handling or required permissions for a code-execution tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds only that inputs are 'available as variables' inside the script, which is marginal beyond the schema's own descriptions.

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

Purpose4/5

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

States a specific verb and resource: run an ad-hoc JavaScript snippet on Orchestrator. It distinguishes itself from saved-action siblings by noting the temporary action lifecycle ('creates a temporary action ... then deletes the action'), though it does not name an alternative sibling explicitly.

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?

Provides clear usage context: 'for prototyping and quick checks.' However, it does not state when not to use it or name alternative tools (e.g., vro_run_action) for production or repeatable tasks.

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

vro_run_workflowA

Run a workflow by id or name with plain JSON inputs ({inputName: value}); values are converted to Orchestrator types automatically (string, number, boolean, Date, Properties, Array/x, SecureString, SDK objects given as id). By default waits for completion and returns state, outputs, error and logs.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoWait for the run to finish (default true)
inputsNo
workflowYesWorkflow id or name
includeLogsNoInclude logs even on success (always included on failure)
timeoutSecondsNoMax wait (default 180)

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does so well: it discloses automatic type conversion, the default blocking/wait behavior, and what is returned (state, outputs, error, logs). It omits auth/permission requirements and side-effect details, but the execution semantics are unusually well covered.

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

Conciseness4/5

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

A single dense sentence that front-loads the core action before the parenthetical detail on type conversion and the trailing note on default wait behavior. Every clause earns its place, though the density is slightly heavy for one sentence.

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

Completeness4/5

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

With no annotations and no output schema, the description compensates by describing return contents and default timing, and it covers the otherwise-undocumented inputs parameter. Missing only edge-case/error and permission context, so it is close to complete for calling the tool correctly.

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 80% (only 'inputs' is undocumented in the schema), and the description fills that gap precisely by explaining the {inputName: value} shape and the automatic conversion of values to Orchestrator types. This adds real meaning beyond the structured fields.

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

Purpose4/5

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

States a specific verb+resource ('Run a workflow') and how it is identified (by id or name), which separates it from run_action and run_script siblings by resource type. It does not explicitly name those siblings, so it stops short of full differentiation.

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

Usage Guidelines3/5

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

Usage is implied by the verb and the 'by default waits' behavior, but there is no explicit when-to-use guidance nor any mention of alternatives like vro_run_action or when wait=false is preferable. A reader can infer intent but gets no routing help.

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

vro_save_actionA

Create or update an action (upsert by module/name). Script must be plain ES5 JavaScript (no arrow functions, let/const, template literals, etc.) โ€” Orchestrator runs Rhino. Omitted inputs/returnType keep the existing ones on update. Versions are always maintained: new actions start at 1.0.0, every update bumps the patch version unless version/bump is given.

ParametersJSON Schema
NameRequiredDescriptionDefault
bumpNoAuto-bump level when version is omitted (default patch)
nameYes
inputsNo
moduleYese.g. com.mayank.lab
scriptYes
versionNoExplicit x.y.z. Omit to auto-bump: new = 1.0.0, update = patch+1
returnTypeNoe.g. string, Properties, Array/string, VC:VirtualMachine, void
descriptionNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses the ES5/Rhino runtime constraint, that omitted inputs/returnType are preserved on update, and the versioning policy (new = 1.0.0, patch bump unless version/bump given). It does not cover permissions, atomicity, or what the call returns, so not a 5.

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 tight sentences, each with a distinct payload (purpose, script constraint, update merge, versioning), and the primary create/update intent is front-loaded. Parenthetical examples are compact and useful.

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

Completeness4/5

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

For an 8-parameter mutation with no annotations and no output schema, the description covers the operational essentials an agent needs (upsert key, script dialect, merge behavior, versioning). It leaves out permission requirements and the failure/return shape, which would be nice but are secondary.

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 only 50%, so description additions matter: it constrains script to plain ES5 (a real correctness rule absent from the schema) and clarifies preservation semantics for inputs/returnType plus version/bump behavior. It does not resolve module/name formats beyond 'upsert by module/name', but that plus the schema examples is adequate.

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 verb (create/update, i.e. upsert) and resource (action), with the keying scheme (module/name) that defines identity. It is clearly distinguishable from siblings like vro_get_action and vro_run_action.

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

Usage Guidelines3/5

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

The description implies when it applies (new action vs update, keyed on module/name) and notes update-time merge behavior, but names no alternatives or when-not conditions. An agent must infer that vro_get_action/delete workflows are the other routes. Implied usage only.

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

vro_save_workflowA

Create or update (upsert by name + folder) an Orchestrator workflow from a compact spec: inputs, outputs, attributes and ordered steps (script tasks, action calls, decisions, ends). Builds the schema, creates the folder path if missing, and validates. Scripts must be plain ES5. Steps flow in array order unless next/ifTrue/ifFalse say otherwise. Versions are always maintained: new = 1.0.0, each update bumps the patch version unless version/bump is given. Set dryRun to only return the generated XML.

ParametersJSON Schema
NameRequiredDescriptionDefault
bumpNoAuto-bump level when version is omitted (default patch)
nameYes
stepsYes
dryRunNo
folderYesWorkflow folder path, e.g. 'mbcom/Onboarding' (created if missing)
inputsNo
outputsNo
versionNoExplicit x.y.z. Omit to auto-bump: new = 1.0.0, update = patch+1
attributesNo
descriptionNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses side effects (builds schema, creates missing folder path, validates), an ES5 scripting constraint, control-flow defaults (array order unless next/ifTrue/ifFalse), and a versioning policy (new = 1.0.0, patch bump on update unless version/bump given). It omits auth/permission needs and what happens on validation failure or when overwriting an existing workflow.

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

Conciseness4/5

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

Dense but front-loaded: the upsert purpose and spec come first, then side effects, then the scripting constraint, versioning, and dryRun. Sentences are information-bearing, though the version-bump rule is stated twice (in prose and implied again in the schema) and the block is on the long side.

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

Completeness4/5

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

For a 10-parameter nested-spec tool with no output schema and no annotations, the description covers the authoring model, control flow, versioning, and dryRun preview well enough to call it correctly. Remaining gaps are return-shape specifics (workflow id, resulting version, validation errors) and permission requirements, which are not addressed.

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 only 30% across 10 parameters, so the description must compensate, and it does for the highest-value ones: dryRun's preview-only XML behavior, the version/bump interaction, step ordering and next/ifTrue/ifFalse routing, and the inputs/outputs/attributes spec. It adds real meaning beyond the schema, though args/action linking and resultTo are left entirely to the schema.

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 verb (upsert/create-or-update) and resource (Orchestrator workflow) plus the keying rule (name + folder) and the spec it consumes. It is distinguishable from sibling save/find tools like vro_save_action and vro_get_workflow without opening any schema.

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

Usage Guidelines3/5

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

The create-vs-update behavior is implied by 'upsert by name + folder' and dryRun gives a preview path, but there is no explicit when-to-use guidance, no prerequisites (e.g. whether an existing workflow should be fetched first), and no named alternatives such as vro_save_action. Usage is inferable rather than stated.

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

vro_server_infoA
Read-only

Check connectivity to VCF Operations Orchestrator: logs in, returns the server's /about info, the auth mode in use, and the loaded API spec. Call this first if anything fails.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With only readOnlyHint declared, the description adds real behavioral context: it performs a login, and it reports the server's about info, auth mode, and loaded spec. The 'logs in' detail is worth disclosing since a session handshake is more than a pure read, though it is not destructive enough to contradict readOnlyHint.

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?

Two short sentences: the first front-loads what the tool does and returns, the second delivers the single most actionable instruction ('call this first if anything fails'). No filler.

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?

No output schema exists, so the description compensates by naming the returned payload (about info, auth mode, API spec), and there are no parameters to document. An agent has everything needed to decide to call it and interpret the result.

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?

The tool takes zero parameters, so per the baseline there is nothing for the description to disambiguate. It correctly avoids inventing input semantics.

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 verb ('Check connectivity') plus resource ('VCF Operations Orchestrator') and enumerates exactly what is returned: /about info, auth mode, loaded API spec. This is clearly distinguishable from every sibling (api_search, find_workflows, run_workflow, etc.), none of which is a connectivity/diagnostic probe.

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 routing guidance: 'Call this first if anything fails,' which tells the agent exactly when to reach for it. It stops short of naming an alternative or a when-not condition, so it falls just under the top band.

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

vro_set_versionsA

Set or bump the version of actions (whole module or listed fqns) and/or workflows (ids or names) in one call, without touching their content. Use to baseline versions (e.g. set 1.0.0) or to mark a release (bump minor/major).

ParametersJSON Schema
NameRequiredDescriptionDefault
bumpNoBump instead of set (default patch if version omitted)
moduleNoAction module: apply to every action in it
actionsNoAction 'module/name' or ids
versionNoSet exactly this x.y.z
workflowsNoWorkflow ids or exact names
onlyIfBelowNoWith version: only change items currently below this version (e.g. baseline 0.0.0 items to 1.0.0)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that it acts in bulk over whole modules or listed fqns/ids and does not alter content, but says nothing about reversibility, permissions, version-history semantics, or error behavior when a target is missing or the version conflicts.

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?

Two tightly written sentences; the operation and its scoping constraint are front-loaded and the use case follows. No filler or redundancy.

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

Completeness3/5

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

For a 6-parameter mutation tool with no annotations and no output schema, the description covers the 'what' and 'why' well but omits operational detail an agent would want, such as conflict behavior, whether prior versions are retained, and what a partial failure across a module returns.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters are already documented. The description mostly restates the schema's set-vs-bump semantics ('set 1.0.0' / 'bump minor/major') and adds little beyond it, so the baseline 3 applies.

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 precise verb (set/bump) and resource (action and workflow versions) plus the key scoping fact 'without touching their content'. That last clause implicitly separates it from the save/run siblings, so an agent can identify it without opening the schema.

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 concrete when-to-use guidance: baselining versions (e.g. set 1.0.0) versus marking a release (bump minor/major). It does not name alternatives or state when not to use it (e.g. versus save_action), so it falls short of a 5.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv0.6.1
    • First observedvro_api_call
    • First observedvro_api_describe
    • First observedvro_api_search
    • First observedvro_delete_workflow
    • First observedvro_find_actions
    • First observedvro_find_workflows
    • First observedvro_get_action
    • First observedvro_get_execution
    • First observedvro_get_workflow
    • First observedvro_list_executions
    • First observedvro_run_action
    • First observedvro_run_script
    • First observedvro_run_workflow
    • First observedvro_save_action
    • First observedvro_save_workflow
    • First observedvro_server_info
    • First observedvro_set_versions

TDQS

A3.6/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have clearly distinct resource+action targets (find/get/save/run for workflows and actions, executions, API spec). Minor overlap between vro_run_workflow (which waits and returns state) and vro_get_execution, and between vro_run_action and vro_run_script, but descriptions clarify the intended use of each.

Naming Consistency5/5

Every tool follows the same vro_<verb>_<noun> snake_case pattern (vro_api_search, vro_find_workflows, vro_save_action, vro_run_execution-style verbs). No mixed conventions or vague verbs, making the set highly predictable.

Tool Count4/5

17 tools for a broad platform (workflows, actions, executions, versions, and full REST API access) is reasonable and each tool earns its place. It leans slightly heavy, but the scope (full Orchestrator domain) justifies it.

Completeness4/5

Strong lifecycle coverage: find/get/save/run/delete for workflows, find/get/save/run for actions, plus execution inspection, version management, and a raw vro_api_call escape hatch for anything missing. Minor gaps exist (no delete action, no cancel/delete execution tool), workable via the generic API call.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects Claude Code to any ObjectStack deployment, enabling discovery, querying, and updating of objects and records, plus running business actions, all under user permissions and row-level security.
    Apache 2.0
  • F
    license
    A
    quality
    D
    maintenance
    Enables Claude to read and control Veeam Backup & Replication infrastructure through natural language, supporting full operator capabilities like starting/stopping jobs, creating backups, and monitoring threat detection via the VBR REST API.
    34
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables Claude to discover and call any REST API from an OpenAPI/Swagger spec or Postman collection at runtime, with authentication, workflows, and prebuilt registry support.
    13 npm
    MIT