Skip to main content
Glama

orquestra-core-mcp

License: MIT Python 3.10+ MCP

An MCP control plane for OrquestraAI. It lets an agent change its own harness fleet instead of asking a human to click through a desktop app: activate skills just in time, flip MCP servers on and off, read the master AGENTS.md, append a mission rule, and check which harnesses are linked.

Why

Every harness — Codex, Claude Code, Antigravity, OpenCode, Kilo, Copilot, Grok, Hermes, Freebuff — reads the same three projections under ~/.orquestra:

~/.orquestra/
├── skills-library/<id>/SKILL.md   master vault of every skill
├── active/<scope>/<id>            symlinks the harnesses actually read
├── mcps.json                      catalog compiled into each harness config
└── AGENTS.md                      master instructions, symlinked per harness

Editing that tree by hand is fragile: a half-written catalog or a real directory where a symlink belongs breaks a harness silently. This server performs the same operations OrquestraAI itself performs — atomic symlink swaps, catalog changes through the native binary, backed-up instruction edits — and exposes them as MCP tools with structured results.

  • Just-in-time skills — enable a skill for one harness, or globally, and it is projected into every harness scope immediately.

  • Fleet-aware — a global toggle fans out to all harness projections, so you never leave one harness reading a stale scope.

  • Native delegation — every catalog change ends in orquestra --mcp-deploy, so this server cannot drift from OrquestraAI's own serializers and the returned changed list is the deploy's real answer.

  • Safe writes — symlinks are created at a temporary name and os.replaced; AGENTS.md is copied to ~/.orquestra/backups/ before an atomic replace.

  • Readable estimates — each skill reports an approximate token weight so an agent can reason about context budget before loading it.

Related MCP server: walkie

Install

From this repository:

python3 -m venv .venv && .venv/bin/pip install .

or with pipx / uv:

pipx install .
uv tool install .

Installing exposes the orquestra-core console script. You can also run the module directly: python3 -m orquestra_core.server.

Requirements: Python 3.10+, the official mcp SDK, and the native orquestra binary on PATH for the catalog and fleet tools (~/.local/bin/orquestra is found automatically, ORQUESTRA_BIN overrides it).

MCP client setup

The server speaks MCP over stdio and needs no arguments.

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "orquestra-core": { "command": "orquestra-core", "args": [] }
  }
}

Codex (~/.codex/config.toml):

[mcp_servers.orquestra-core]
command = "orquestra-core"
args = []

Cursor (~/.cursor/mcp.json or .cursor/mcp.json):

{
  "mcpServers": {
    "orquestra-core": { "command": "orquestra-core", "args": [] }
  }
}

Antigravity (~/.gemini/config/mcp_config.json):

{
  "mcpServers": {
    "orquestra-core": { "command": "orquestra-core", "args": [] }
  }
}

OrquestraAI (~/.orquestra/mcps.json, then orquestra --mcp-deploy):

"orquestra-core": {
  "id": "orquestra-core",
  "name": "Orquestra Core (Control Plane)",
  "description": "Just-in-time skills, MCP toggles, fleet status and master rules.",
  "command": "orquestra-core",
  "args": [],
  "env": {},
  "globalEnabled": true,
  "enabledHarnesses": []
}

If orquestra-core is not on PATH, use "command": "python3", "args": ["-m", "orquestra_core.server"] instead.

Tools

Tool

Inputs

Returns

orquestra_list_skills

scope? (default global)

[{id, name, description, tokens, enabled, is_inherited}]

orquestra_enable_skill

skill_id, scope?

{id, scope, enabled, changed[], scopes[], tokens, path}

orquestra_disable_skill

skill_id, scope?

{id, scope, enabled, removed[], scopes[], tokens_saved}

orquestra_list_mcps

—

[{id, name, description, command, args, globalEnabled, enabledHarnesses}]

orquestra_toggle_mcp

mcp_id, scope?, enabled?

{id, scope, enabled, changed[], targets, servers, backup, globalEnabled, enabledHarnesses}

orquestra_read_instructions

—

master AGENTS.md as text

orquestra_append_mission_rule

section_title, rule_content

{section, path, changed, lines_added, bytes, backup}

orquestra_fleet_status

—

{count, installed, bridged, unbridged[], harnesses[]}

orquestra_create_skill

skill_id, name, description, instructions_markdown, scripts?

{id, created, path, tokens, bytes, scripts[]}

orquestra_delete_skill

skill_id

{id, deleted, unlinked[], backup}

orquestra_create_mcp

mcp_id, name, description, command, args?, env?, global_enabled?

{id, created, changed[], targets, servers, backup}

orquestra_delete_mcp

mcp_id

{id, deleted, changed[], targets, servers, backup}

scope is global or a harness id discovered from ~/.orquestra/active (antigravity, claude, codex, copilot, freebuff, grok, hermes, kilo, opencode). enabled on a harness scope means "projected into that harness"; is_inherited means the global scope also projects it.

Example prompts

List my skills and tell me which ones cost the most context.
Enable the "playwright" skill globally, then confirm every harness sees it.
Disable "kubernetes" for codex only.
Turn off the "puppeteer" MCP server and redeploy.
Append a rule under "Safety": never rewrite migration files without a backup.
Which harnesses are currently bridged?

Behavior notes

  • orquestra_list_skills memoizes SKILL.md metadata on (mtime, size); repeat calls over a 400-skill vault stay in the low milliseconds.

  • Enabling a skill that is already projected is a no-op (changed: []).

  • A real directory where a skill symlink belongs is never deleted or replaced; the tool returns an explanatory error instead.

  • orquestra_append_mission_rule matches the section heading case-insensitively, prefixes bare lines with - , and creates the section when it is missing.

  • orquestra_create_skill accepts [A-Za-z0-9-] ids, quotes YAML values that need it, and removes the half-written folder if any script name is rejected.

  • orquestra_delete_skill unlinks every scope first, then moves the vault folder to backups/deleted-skills-<stamp>/; nothing is hard-deleted.

  • orquestra_create_mcp writes the entry and its managedIds membership in one atomic catalog replace, then deploys, so a crash cannot leave half a server.

  • orquestra_toggle_mcp edits the catalog in place and deploys; a harness cannot opt out of a globally enabled server, so disable it globally first, matching the desktop rule. Unknown harness scopes are rejected before any write.

  • orquestra_delete_mcp drops the entry but deliberately leaves its managed id for the deploy: that membership is what marks the block stale, so the serializers purge it from every harness config.

  • ORQUESTRA_HOME relocates the whole tree (used by the test suite).

Development

python3 -m venv .venv && .venv/bin/pip install -e . pytest
.venv/bin/python -m pytest tests/ -q
bash scripts/check-file-size.sh

Tests build a throwaway ORQUESTRA_HOME under /var/tmp/testing/ with a fake native binary, so they never touch a real ~/.orquestra.

License

MIT — see LICENSE.

Available Tools

12 tools
orquestra_append_mission_ruleB

Append a mission directive to a section of the master AGENTS.md, with a backup.

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_contentYes
section_titleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/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 burden and does disclose key traits: it appends rather than overwrites, it targets the master AGENTS.md, and it takes a backup. It omits permissions, whether a missing section is created, and failure/concurrency behavior, so it is only partially adequate for a mutation tool.

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; the append action and the backup side effect appear immediately. It is efficient, though extremely brief.

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?

An output schema exists so return values need not be explained, but with 0% parameter coverage and no annotations the description leaves real gaps: section-matching semantics, backup location, and whether the section is created if absent.

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% for both parameters, so the description must compensate. 'A section' loosely maps to section_title and 'mission directive' to rule_content, but it gives no format, matching, or content-structure guidance for either parameter.

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 (append), a specific resource (mission directive / rule) and its destination (a section of the master AGENTS.md), which is enough to distinguish it from siblings like create_skill or toggle_mcp. It doesn't explicitly name an alternative tool, but the purpose 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?

No when-to-use or when-not-to-use guidance is given, and no alternative is named. The agent must infer from the verb alone that this is for adding persistent project directives.

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

orquestra_create_mcpC

Register a new MCP server in the catalog, then deploy it to every harness.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
argsNo
nameYes
mcp_idYes
commandYes
descriptionYes
global_enabledNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/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 burden, and it does disclose one important side effect beyond the name: the server is auto-deployed to every harness. However it says nothing about auth/permissions, reversibility, idempotency, or what happens if mcp_id already exists, which are significant gaps for a create+deploy mutation.

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 waste, and the primary action (register) leads while the secondary effect (deploy) follows. It is arguably too terse for a 7-parameter mutation tool, but structurally it is clean.

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?

An output schema exists so return values need not be described, but the definition is otherwise thin: no annotation coverage, zero parameter documentation, and only a one-line summary for a tool that both creates and fans out a deployment. An agent lacks enough to invoke it confidently.

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

Parameters1/5

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

Schema description coverage is 0% across 7 parameters (4 required), and the description adds no meaning for any of them. Terms like 'catalog' and 'harness' are not tied to fields such as mcp_id, command, env, args, or global_enabled, leaving the agent to infer everything from bare 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?

States a specific verb+resource: registering a new MCP server, and adds a second concrete action (deploy to every harness). This clearly distinguishes it from the sibling list/toggle/delete operations without naming them 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?

The description implies this is the creation path but gives no explicit when-to-use guidance, no prerequisites, and no routing advice relative to siblings like orquestra_toggle_mcp or orquestra_delete_mcp. The only implied signal is that creation precedes deployment.

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

orquestra_create_skillC

Create a skill in the vault with frontmatter, markdown body and optional scripts.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
scriptsNo
skill_idYes
descriptionYes
instructions_markdownYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries full burden and does not disclose idempotency/overwrite behavior, required auth or vault permissions, what happens if skill_id already exists, or reversibility. It does convey the artifact's structure (frontmatter + markdown body + optional scripts), which is its only real behavioral value.

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; the core action and payload shape come first. Brief, though brevity here edges toward under-specification rather than true conciseness.

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 5-param mutation tool with zero annotations and zero schema descriptions, the description is far too thin. The output schema covers return values, but nothing addresses preconditions, collisions, or the four required parameters, so an agent cannot safely invoke it from the description alone.

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 0% across 5 parameters, so the description must compensate. It loosely maps to three params (frontmatter/description, markdown body/instructions_markdown, scripts), but skill_id and name are entirely unexplained and no formats or constraints are given.

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 (Create) plus resource (skill) and location (in the vault), which distinguishes it from its delete_skill/list_skills/enable_skill siblings. However it doesn't explicitly contrast with the alternative write path (orquestra_create_mcp) or state uniqueness constraints, 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 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 vs siblings like orquestra_enable_skill or orquestra_create_mcp, and no prerequisites or preconditions (e.g. whether skill_id must be unique, whether an existing skill is overwritten). Usage is only implied by the verb.

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

orquestra_delete_mcpB

Remove an MCP server from the catalog and from every harness config.

ParametersJSON Schema
NameRequiredDescriptionDefault
mcp_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/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 does disclose a valuable cascading effect—removal propagates to 'every harness config'—but says nothing about irreversibility, required permissions, or confirmation, which are the critical traits for a destructive operation.

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 front-loaded sentence with zero filler; the destructive scope is stated immediately and nothing is repeated or padded.

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?

An output schema exists, so return values need no explanation, and the description conveys the cascading removal scope. However, for a destructive, annotation-free delete it omits failure behavior, idempotency, and permission requirements, leaving meaningful gaps.

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 lone required parameter mcp_id is undocumented everywhere. The description never explains what an mcp_id is or where to obtain it, so it adds no meaning beyond the bare schema field name.

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 (Remove) and resource (MCP server) plus scope: 'from the catalog and from every harness config.' It distinguishes the destructive delete from the sibling toggle_mcp, which only enables/disables, so an agent can differentiate the operation without opening the schemas.

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 when-to-use, when-not-to-use, or alternative is offered. The description never contrasts this with orquestra_toggle_mcp (disable) or tells the agent what preconditions (e.g., server must exist) must hold, leaving selection to inference.

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

orquestra_delete_skillA

Archive a skill: unlink it from every scope, then move its vault folder to backups.

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/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 the two concrete side effects (unlinking from every scope, relocating the vault folder to backups), which tells the agent the change is broad-reaching and recoverable-by-backup. It stops short of stating permission requirements, idempotency, or whether other scopes' references break immediately.

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?

One sentence, front-loaded with the action, with no filler. Both clauses earn their place by describing the effect sequence.

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?

An output schema exists, so return values need not be explained. The description covers the essential behavior of a destructive-adjacent tool, leaving only minor gaps: the 'delete' vs 'archive' naming mismatch and the absence of any permission or scope-impact caveat.

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 0% and the single skill_id parameter is undocumented in both the schema and the description; the description only implies a skill is identified. With just one required, self-evident identifier, this is a moderate rather than severe gap, but a note on accepted ID format would add real value.

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 names a specific verb+resource ('Archive a skill') and immediately scopes it by describing the two-step effect (unlink from every scope, move vault folder to backups). It implicitly separates this from non-destructive siblings like disable_skill, though it does not name an alternative 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 when-to-use or when-not-to-use guidance, and no alternative is named. The description hints that the operation is destructive-adjacent by mentioning backups, but an agent still has to infer that this should be preferred over disable_skill only when removal is truly wanted.

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

orquestra_disable_skillC

Deactivate a skill; 'global' removes its symlink from every harness projection.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoglobal
skill_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/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 discloses one useful trait — that 'global' removes the symlink from every harness projection — but omits reversibility, whether other scope values exist, and any permission requirements for a mutation operation.

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 compact sentence with the action front-loaded and the scope caveat attached. It is efficient, though the extreme brevity borders on under-specification for a mutation tool.

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?

An output schema exists, so return values need not be explained, but that is the only gap covered. For a state-changing tool with no annotations and 0% schema coverage, the missing scope enumeration, reversibility, and enable/delete disambiguation leave the definition materially incomplete.

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 partially explains the 'scope' parameter by describing the 'global' value's effect, but never enumerates the other accepted values (the schema shows only a bare string with default 'global'), and 'skill_id' is left entirely undefined.

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 ('Deactivate a skill'), which is clear on its own. However, it does not distinguish itself from the near-identical siblings orquestra_enable_skill and orquestra_delete_skill, leaving the agent to infer that deactivation differs from deletion.

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 when-to-use guidance is given. The description never says when to deactivate instead of delete, nor what prerequisites or state the skill must be in. The only conditional mentioned ('global') describes a side effect rather than when to pick this tool.

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

orquestra_enable_skillA

Activate a skill in a scope; 'global' propagates the symlink to every harness.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoglobal
skill_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/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 does disclose one meaningful side effect — 'global' propagates the symlink to every harness — which is real value. It omits idempotency, required permissions, and whether activation fails on a non-existent skill.

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 front-loaded sentence with the primary action first and the scope caveat second. 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?

An output schema exists, so return values need not be described. For a state-mutating, annotation-free tool the description is minimally adequate: it covers the notable side effect but leaves preconditions, permissions, and failure modes unaddressed.

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 0% for two parameters, so the description must compensate. It partially does: it explains the 'global' value's effect, but never states that scope defaults to 'global' (the schema's default), and says nothing about skill_id's format or provenance. Partial compensation only.

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 ('Activate a skill') and adds the scope dimension, which is enough for an agent to distinguish it from orquestra_disable_skill or orquestra_create_skill. It does not explicitly name the sibling it contrasts with, so it stops short of a 5.

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 pairing with orquestra_disable_skill, and the scope note hints at when 'global' is appropriate. However, there is no explicit when-to-use/when-not statement, no mention of prerequisites (does the skill need to exist first?), and no named alternative.

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

orquestra_fleet_statusB

Report link state for every harness in the OrquestraAI fleet.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. "Report" implies a read with no side effects and "every harness" implies no filtering, but the description never states read-only scope, permissions required, possible partial failures across the fleet, or execution cost.

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 or redundancy. It is arguably too terse for a fleet-wide operation, but every word earns its place.

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?

Because an output schema exists and there are no parameters, the description needn't explain return values or inputs. Still, with no annotations and undefined jargon like "link state" and "harness", the agent lacks enough context about the semantics and scope of the reported data.

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 there is nothing for the description to disambiguate. Baseline 4 applies; the description adds no param noise, which is appropriate here.

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 ("Report") and resource ("link state for every harness in the OrquestraAI fleet"), which separates it from the skill/MCP management siblings by resource type. It stops short of naming an alternative or clarifying what "link state" concretely contains, so it is clear but not fully self-differentiating.

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 guidance, no prerequisites, and no mention of alternatives among the eleven sibling tools. The agent must infer from the name that this is the fleet-wide status check.

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

orquestra_list_mcpsA

List registered MCP servers with their global and per-harness state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 discloses that results include both global and per-harness state, which is useful. However it says nothing about read-only safety, permissions, or whether listing triggers any side effects, leaving gaps an annotation-free tool should fill.

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 front-loaded sentence with no filler; the resource and the scope of returned state are both delivered immediately.

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 parameterless read-only list tool with an output schema present, the description is nearly sufficient since return values need no explanation. The only shortfall is the absence of any behavioral note (read-only, side-effect-free), which matters more given no annotations.

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 the baseline of 4 applies and no parameter documentation is required. Nothing in the description is needed to compensate for a schema gap.

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 (registered MCP servers) plus the scope of returned data (global and per-harness state). It is clearly distinguishable from write siblings like orquestra_create_mcp, orquestra_delete_mcp and orquestra_toggle_mcp, though it never names an alternative explicitly.

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 listing intent implies a read/discovery use case, which an agent can infer, but there is no explicit when-to-use, when-not-to-use, or pointer to related tools such as orquestra_fleet_status. Guidance is implied rather than stated.

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

orquestra_list_skillsB

List every skill in the vault with token weight and whether a scope projects it.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoglobal

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/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. 'List' implies a read-only, non-destructive operation and it discloses what the result contains, but it says nothing about permissions, pagination (despite 'every skill'), or rate limits.

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?

One tightly written sentence with no filler, and the core action is front-loaded. It earns its space, though it could trade a few words for the missing parameter 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?

An output schema exists, so return values need not be explained, and the single-sentence description covers the basic action. However, the sole input parameter is left completely unspecified in both schema and description, leaving a real gap for an agent deciding what to pass.

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?

The single 'scope' parameter has 0% schema description coverage and a default of 'global', yet the description only alludes to 'a scope' without defining the parameter, its default, or valid values. The description does not compensate for the schema gap.

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 (skills in the vault) plus the salient output fields (token weight, scope projection). It is clearly distinct from mutation siblings like orquestra_create_skill and orquestra_delete_skill, though it does not explicitly name a sibling to contrast against.

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 when-to-use guidance, no exclusions, and no mention of alternatives such as orquestra_list_mcps or orquestra_fleet_status. A read/inspection use case is only implied by the verb 'List'.

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

orquestra_read_instructionsA

Return the master ~/.orquestra/AGENTS.md that every harness inherits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. 'Return' implies a read-only operation and the 'every harness inherits' clause usefully conveys that this file is a shared baseline, but the description never explicitly confirms read-only semantics, absence of side effects, or any auth/permission requirements.

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 front-loaded sentence with no filler. The resource is named first and the inheritance context follows briefly; every clause earns its place.

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 an output schema present, return-value documentation is unnecessary, and the zero-parameter signature means little parameter guidance is needed. The main shortfall is the missing read-only/side-effect statement that would normally come from annotations.

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 there is nothing for the description to disambiguate; baseline 4 applies. Schema coverage is 100% and there are no inputs to explain.

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 ('Return') and an exact resource ('the master ~/.orquestra/AGENTS.md'), which is unambiguous and clearly distinct from siblings like orquestra_list_skills or orquestra_fleet_status. The only mild gap is that the 'every harness inherits' clause is context rather than differentiation.

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 says what is returned but never states when to call this tool, when not to, or what alternative to prefer. The name makes the intent inferable, but no explicit usage guidance is provided.

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

orquestra_toggle_mcpB

Enable or disable one MCP server, then redeploy the catalog to every harness.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoglobal
mcp_idYes
enabledNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full behavioral burden. It does disclose a non-obvious side effect — a catalog redeployment to every harness — which is genuinely valuable, but it omits permission requirements, reversibility/failure behavior, and whether the state change is persisted across restarts.

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 action front-loaded and no filler. Given three undocumented parameters and no annotations, the sentence is arguably undersized for the tool's complexity, keeping it just below a 5.

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?

An output schema exists, so return values need not be explained, and the redeploy side effect is disclosed. However, for a mutation tool with zero annotations and zero schema coverage, the description leaves scope semantics, default-enable behavior, and error/permission conditions unresolved.

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% across three parameters. The description implies mcp_id (one server) and the enabled flag, but says nothing about the `scope` parameter (default 'global') nor how the `enabled=true` default means a bare call enables rather than toggles. The unstated interaction between `scope` and 'every harness' is a real gap.

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 pair (enable/disable) acting on a specific resource ('one MCP server'), which is clearly different from create_mcp, delete_mcp, or list_mcps. It stops short of naming sibling alternatives, but the verb+resource+scope is unambiguous enough that an agent can identify the tool's job.

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 / when-not-to-use guidance and no mention of alternatives such as create_mcp or delete_mcp. The only usage signal is the implied 'to change an MCP's state', which the name already conveys.

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. 12 tool updatesv0.1.0
    • First observedorquestra_append_mission_rule
    • First observedorquestra_create_mcp
    • First observedorquestra_create_skill
    • First observedorquestra_delete_mcp
    • First observedorquestra_delete_skill
    • First observedorquestra_disable_skill
    • First observedorquestra_enable_skill
    • First observedorquestra_fleet_status
    • First observedorquestra_list_mcps
    • First observedorquestra_list_skills
    • First observedorquestra_read_instructions
    • First observedorquestra_toggle_mcp

TDQS

B3.4/5.0

Scored across 12 tools

Disambiguation4/5

Each tool targets a distinct resource (skills, MCPs, instructions, fleet) with clear actions, so misselection is unlikely. Minor overlap where toggle_mcp and create/delete_mcp both affect MCP activation, and enable/disable vs create for skills could blur slightly.

Naming Consistency4/5

Consistent orquestra_ prefix with a verb_noun convention (list_skills, enable_skill, create_mcp, delete_mcp). Only deviation is fleet_status, which uses noun_noun rather than an action verb.

Tool Count5/5

12 tools is well-scoped for a skill/MCP/instruction management server, with balanced CRUD sets for two resource types plus reading and status operations, each earning its place.

Completeness4/5

Skills and MCPs both have full lifecycle coverage (create/list/enable/delete) and instructions can be read and appended. Minor gaps: no update/edit for skill content or mission rules, only create/delete and append.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers