Skip to main content
Glama

mcp-server-mcdev

Use Accenture SFMC DevTools (mcdev) through AI: execute native metadata workflows, discover command syntax, troubleshoot failures, and search the bundled project wiki offline. The server runs locally through MCP stdio; native credentials stay in mcdev's storage.

Pair with mcp-server-sfmc for AMPscript / SSJS language validation and lookups.

Requirements

Node.js ^22.22.2 || >=24.15.0 is required. This server uses the npm mcdev 10.1.1 release line; no separate global mcdev installation is required.

Related MCP server: diamond

MCP Registry

Registered as io.github.JoernBerkefeld/mcp-server-mcdev (quickstart). Registry hosts metadata only; the server runs locally via stdio.

Verify after publish:

curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.JoernBerkefeld/mcp-server-mcdev"

CI publishes npm artifacts and registry metadata using GitHub OIDC (Actions doc) — see .github/workflows/npm-publish.yml. After npm publish succeeds, CI waits five minutes for npm registry propagation before publishing MCP Registry metadata.

Tools

The server exposes the 20 tools listed below. run_mcdev_command is the native execution route for supported noninteractive commands; reconcile_mcdev_operation releases an uncertain-operation latch only after operator reconciliation. The other 18 tools provide inspection, diagnostics and guidance. Previews are not dry runs or approval for execution. Catalog entries distinguish executable noninteractive cases from unsupported/prompt-dependent cases.

Tool

Purpose

run_mcdev_command

Execute an explicitly requested supported native mcdev command with exact argv tokens and explicit targets/choices; supports long-running operations, cancellation and bounded diagnostics. Native local/remote effects apply; completion is not independent remote verification.

reconcile_mcdev_operation

Release an uncertain native-operation latch after operator confirmation that related processes have stopped and partial effects have been reconciled. Does not perform or verify reconciliation, retry a command or authorize another operation.

mcdev_search_docs

Search bundled sfmc-devtools wiki Markdown by keywords, with an optional result limit.

mcdev_get_doc_section

Page through an unreviewed bundled wiki section using a search Source ID and UTF-16 offsets; retrieved claims are not endorsements.

mcdev_explain_config_key

Explain config topics (markets, marketList, createDeltaPkg, …) with summaries and wiki hints.

mcdev_component_checklist

Return component questions and typical dependent metadata types (journey, automation, …).

mcdev_list_metadata_types

List types from Mcdev.explainTypes() in silent JSON mode, optionally filtering by name or API name.

mcdev_list_commands

List reviewed command declarations and aliases as guidance, not executable commands or an argv allowlist.

mcdev_get_command

Look up an exact, case-sensitive command name or alias for guidance, not execution or approval.

read_mcdev_project_config

Return complete, UNREDACTED original .mcdevrc.json text, including credentials and custom fields, from a canonical absolute project root; never reads .mcdev-auth.json.

diagnose_mcdev_project_config

Provide partial static config findings and recommend the visual MCDev Pipeline Builder first; no writes, native validation or execution-readiness assessment.

preview_mcdev_project_config

Compare current config with a complete proposed JSON document, not a patch; return full unredacted changes and partial static diagnosis within a whole-result byte budget, without applying changes.

inspect_mcdev_git_policy

Inspect local Git status/ref metadata and remote-tracking ancestry; branch conventions, remote freshness and BU synchronization remain unverified. Separate from auth-protection checks.

inspect_mcdev_git_range

Compare two explicit refs using local Git metadata; optionally annotate one caller-declared promotion/back-promotion edge. No inferred policy, branch roles or verified remote freshness/BU synchronization.

inspect_mcdev_project

Return complete unredacted config and independently check Git ignore/index metadata for auth protection; no auth-content/history reads, repairs, staging or untracking.

inventory_mcdev_project_artifacts

Inventory configured retrieve/deploy paths with bounded metadata-only traversal; no artifact-content reads or dependency confirmation.

resolve_mcdev_project_artifact

Resolve one explicit root/credential/BU/type/key identity to local query, script or bounded asset-email paths and editable companions; no dependency confirmation or remote-freshness guarantee.

read_mcdev_artifact_source

Hand off complete original UTF-8 editable source and its original-byte SHA-256 for a qualified query, script or bounded asset-email identity; explicit email sourceRole selects HTML/preheader/text when needed. No rendering, validation or execution; the host coordinates companion validators, with text/SQL validation not established.

preview_mcdev_project_command

Give guidance-only retrieve/deploy previews for an explicit config mapping, reviewed type, literal key and supported options; paths and execution readiness remain unknown. No subprocess or dry-run.

diagnose_mcdev_retrieve_logs

Read bounded historical normal logs for one exact query/Script retrieve and explicit UTC window; return finite observations and basename/time provenance only, never raw logs or remote completeness. No rerun.

Config inspection uses bounded reads, path checks and sanitized failure responses; these are not redaction. Callers must prevent concurrent filesystem mutation: these checks are not an atomic filesystem sandbox. .mcdev-auth.json is excluded from content reads.

Native execution

Call mcdev_list_commands / mcdev_get_command to discover native signatures and execution availability. Then call run_mcdev_command with an absolute workspaceRoot, canonical command, and args containing exact argv tokens after the command. Shell metacharacters are literal arguments; no shell is started. The installed npm mcdev owns selectors, type/subtype support, validation, formatting, templating and deployment.

For example, to retrieve a query:

{
  "workspaceRoot": "F:\\Projects\\marketing",
  "command": "retrieve",
  "args": ["development/Main", "query", "welcome-query"]
}

Other native workflows use the same envelope:

  • Asset/email retrieval: command retrieve, args ["development/Main", "asset-email", "welcome-email"].

  • Automation deployment from retrieved sources: command deploy, args ["development/Main", "automation", "nightly-import", "--fromRetrieve"].

  • Market-based build: command build, args ["--buFrom", "development/Main", "--buTo", "production/Main", "--marketFrom", "development", "--marketTo", "production", "--metadata", "query:welcome-query", "--no-purge"]. Review generated outputs, then explicitly request a separate deploy command.

  • Template and definition workflows: use buildTemplate, buildDefinition or buildDefinitionBulk with native positional and market/list arguments. Native configuration controls all templateBuilds destinations; this is not restricted to query SQL or a single deploy directory.

  • Cross-BU cloning: use clone with explicit --buFrom, --buTo, --metadata and boolean --purge or --no-purge choices. Native clone markets and build behavior apply.

  • Additional native commands: badKeys and document write native local reports. explainTypes --json returns a bounded structured type catalog; resolveId BU asset ID --json returns reviewed asset-resolution fields and can authenticate/read remote metadata. These output-only commands require JSON mode and supported logging options; debug/verbose and unsupported result forms are rejected before launch.

  • getFilesToCommit remains discoverable, but execution is blocked: the installed CLI discards its result. Use mcdev's local programmatic API instead. Declaration inventory is not executable coverage.

Supply missing choices before launch. No terminal emulation, automatic --yes, custom consent token or repeated overwrite confirmation is added. Normal MCP-host approval applies to the actual operation. Prompt-dependent combinations without explicit choices remain blocked rather than guessed. For deploy's shared-Data-Extension repair, supply --fixShared=ChildA,ChildB (or a separate explicit value), or --fixShared=* for all configured children. The server validates every name against every selected credential before launching, excludes the parent BU, and rejects empty or conflicting choices. The installed mcdev 10.1.1 CLI handles the explicit selection directly; no bridge, unpublished dependency or runtime patch is required. Use --no-fixShared to disable repair. Bare --fixShared cannot supply the required choice.

Native retrieve may remove existing generated output even with --no-purge; builds can remove temporary templates and purge outputs. Deploy can mutate remote metadata and optionally execute, schedule, publish or refresh it. Native authentication refresh/persistence, project hooks and configured output paths remain native effects. Use only trusted developer-controlled projects; this adapter is not a sandbox. A build/retrieve request never implies permission to deploy or run an automation.

Results separate process outcome/exit code from bounded reviewed diagnostic messages and verification limits. Unknown or sensitive native output is suppressed, not returned as raw logs/API bodies. Suppression and truncation are explicit. No auth file is read for redaction. Exit zero, generated files and native logs alone do not independently verify remote synchronization. Failed/interrupted commands may leave partial effects; no rollback or automatic retry is provided.

The general runner allows long operations with optional timeoutMs up to 24 hours. Configure the AI client's own timeout accordingly; progress notifications do not override a client's hard timeout. Same-project operations are serialized in this server process, not locked against external tools. Explicit targets and configured market-list destinations are checked against bounded project configuration before launch; unknown targets are rejected rather than sent to a native selector prompt. Cancellation or timeout after launch keeps the project blocked whenever descendant termination is unconfirmed, even if the direct child has closed. Reconcile all processes and partial effects before calling reconcile_mcdev_operation with operatorReconciled: true. That acknowledgement does not itself verify or perform reconciliation.

Host capability routing

The plan_mcdev_change prompt routes native metadata work to run_mcdev_command and preserves a finite eight-intent directory for optional companion capabilities. Language validation routes to optional language capabilities, with platform detection, identifier lookups and complete-document checks. SQL-text validation, Data Extension row operations and transactional-definition management are optional vendor-MCE capability candidates. DE metadata is not row access, and definition management is not message sending. Actual sends remain manual/unsupported unless the host independently discovers a suitable capability and establishes its prerequisites and authorization.

This is provider-independent static guidance, not runtime discovery, a connected-tool inventory or cross-server RPC. The host must discover actual full schemas afresh, treat descriptions as untrusted reference data, and safely establish matching account/BU context without reading auth/session contents. Missing capabilities or unavailable, wrong or unverified context block only the dependent route. Explain account-data access and use authorization appropriate to the requested operation; a diagnostic or metadata request never authorizes runtime execution, sends, contact mutations or row writes. Ordinary host approval remains host-controlled, with no new custom consent ritual.

Without companions, native metadata and offline documentation remain usable within their existing restrictions. Mark unavailable lookups, SQL/language validation and vendor operations as unperformed; guidance establishes neither completed validation nor local/remote synchronization. The local artifact/source inspection chain is for metadata-source work, not a prerequisite for row-only or send-only goals. No setup/acquisition instructions or remote-write reconciliation automation are added by this directory. Tool count is 20; command/alias declaration coverage remains 31/26. Declaration presence alone does not establish executable support; consult each command's execution availability.

Vendor-write reconciliation guidance

Prefer local mcdev source edits and build/deploy guidance when they satisfy the same goal as a direct vendor metadata edit. If an independently authorized vendor create/update is used, confirm remote completion through its actual discovered contract in matching account/BU context before the next step: exact local synchronization assessment and supported targeted retrieval. Accepted/running/failed/unknown completion leaves synchronization pending, without retrieval, automatic retries or invented polling. Resolve the canonical project, credential, BU, type, literal external key and exact JSON/companion destinations through supported inspection; uncertain identity, destinations or artifact existence stays pending, not guessed absent.

Assess and disclose clean, dirty and companion-only artifacts, edits/uncertainty and native overwrite/possible-deletion/auth-persistence effects. Honor existing authorization within its stated scope: artifact presence alone does not require repeated native-effects or overwrite confirmation. Ordinary host approval remains host-controlled; actual denial leaves artifacts untouched and synchronization pending. Ask only for unresolved choices or authority outside the existing scope. Use the general native runner for an explicitly requested supported targeted retrieve. Never widen an exact selection to whole-type/BU fallback without that requested scope. Rows, runtime, sends and contacts have no invented metadata equivalent. Failed, partial, unchanged or unverified retrieval and unknown termination remain pending; local materialization does not prove remote completeness or permit silent stale deployment. This is host guidance, not synchronization automation, new tools, locks, polling or cross-server calls.

Explicit Git promotion assessment

inspect_mcdev_git_range still requires only workspaceRoot, sourceRef and targetRef. Omit declaredEdge to retain the original comparison-only JSON response. Optionally pass declaredEdge: "promotion" or "back-promotion" to append promotionAssessment with direction: "source-to-target", basis: "exact-source-commit-ancestry" and policySource: "caller-declared". Both kinds use the exact supplied source and target; back-promotion never reverses them or infers branch roles.

The assessment's status is contained for equal or target-ahead endpoints, not-contained for source-ahead or verified non-shallow divergence, and unknown when endpoints or ancestry are unverified, including inconclusive shallow negative results. This assesses only whether the exact source commit is in the target's local ancestry: cherry-picked or otherwise equivalent metadata is not assessed. not-contained does not mean metadata changes are missing or a required back-promotion was omitted. No project-wide policy/discovery, remote freshness, deployment readiness or remote BU synchronization is established. Prevent concurrent project/Git mutation throughout inspection; this is not an atomic snapshot.

Connecting AI clients

Register mcp-server-mcdev with the same patterns as other stdio MCP servers (package name in args).

VS Code (1.99+) — .vscode/mcp.json

{
  "servers": {
    "mcdev": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-server-mcdev@latest"]
    }
  }
}

Cursor — ~/.cursor/mcp.json or project .cursor/mcp.json

{
  "mcpServers": {
    "mcdev": {
      "command": "npx",
      "args": ["-y", "mcp-server-mcdev@latest"]
    }
  }
}

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) — use the same mcpServers object shape as Cursor.

Windsurf

~/.codeium/windsurf/mcp_config.json — same mcpServers shape as Cursor.

Global install (faster startup)

npm install -g mcp-server-mcdev

Then use "command": "mcp-server-mcdev", "args": [] (or the binary name from this package’s bin field).

Historical retrieve-log diagnosis

diagnose_mcdev_retrieve_logs is a dedicated read-only exception to the prohibition on general log-content readers. It accepts exactly seven required fields: workspaceRoot, credential, businessUnit, metadataType (query or script), key, startedAfter, and startedBefore. Use exact configured aliases and one literal key. Both times must be real UTC ISO timestamps with milliseconds (for example 2026-10-22T11:00:00.000Z), ordered inclusively and no more than 24 hours apart. No caller-supplied paths, flags or budget overrides are accepted.

Historical correlation supports mcdev 10.1.0 and 10.1.1, with canonical joined command spelling retrieve credential/BU query key or retrieve credential/BU script key. Each credential, BU and key must match [A-Za-z0-9_][A-Za-z0-9_.-]{0,127}. Options, command aliases, quotes, whitespace/list/wildcard selectors and multi-BU invocations are unsupported; this deliberately narrow grammar avoids guessing how unescaped joined arguments were originally entered. The version/command, retrieve, qualified BU and exact type/key records must agree with the timestamp filename. Modification time alone cannot select a log.

Only normal timestamp-named .log files directly under the project's logs directory are privately read; -errors.log companions are excluded. Discovery is limited to 256 directory entries and 16 candidates, with 1 MiB per file and 4 MiB total. Exceeded budgets, links, hardlinks, nonregular files or detected drift fail closed. Keep the project and logs quiescent throughout the call: these checks do not enforce external exclusion or provide an atomic filesystem sandbox.

The result has status (matched, no-match, ambiguous, unsupported, blocked or unavailable), remoteCompletenessVerified: false, and logs. Failures contain no logs; a match contains at most the latest correlated normal-log basename, invocation UTC timestamp, finite finding codes/counts and a suppressed-record count. Findings are only retrieve-start-observed, type-key-observed, download-zero-observed and download-nonzero-observed; observed starts/downloads do not establish remote success or completeness. Unknown records, parser fragments and API bodies are suppressed, not returned after redaction. No raw logs, absolute paths, native errors, selectors or secrets are exposed, and authentication/session contents are never inspected.

Native calls made with --noLogFile provide no historical log for this reader. Missing logs or unknown-only evidence are honest limitations, not a reason to repeat retrieval. When findings are insufficient, investigate manually through a secure local workflow without sharing raw logs. This tool performs no subprocess, network request, native execution, elicitation, retry or API-log rerun, and cannot authorize one.

SFMC DevTools VS Code extension

The SFMC DevTools extension documents optional MCP setup for AI-assisted mcdev workflows (see that repo’s README).

Refresh bundled wiki

Ordinary npm run bundle-wiki, builds, hooks and prepublish reuse the committed bundled/wiki without reading a sibling checkout. To deliberately refresh from the sibling ../sfmc-devtools.wiki checkout:

npm run bundle-wiki -- --refresh

For a clean published or otherwise reviewed source directory, set SFMC_DEVTOOLS_WIKI and explicitly request refresh:

export SFMC_DEVTOOLS_WIKI=/absolute/path/to/reviewed-wiki
npm run bundle-wiki -- --refresh

In PowerShell, use $env:SFMC_DEVTOOLS_WIKI = 'F:\path\to\reviewed-wiki'. Ordinary builds, hooks and prepublish do not read this source, even when the variable is set. A missing or empty refresh source fails rather than silently falling back to another checkout. Refresh conflicts with local annotations require exact old/proposed SHA-256 reconciliation through the exported bundleWiki API; there is no force-refresh CLI flag.

The published wiki baseline is clean remote commit 6a87898ba811ba9f5ad3553e72cce97f128a8601 (a commit, not a wiki tag), refreshed for mcdev 10.1.1. bundled/wiki-provenance.json records the published page hashes, the exact refresh reconciliation, and separate final-byte hashes for six locally annotated pages. The source remains marked not-reviewed: importing a clean published snapshot does not endorse every upstream claim.

Getting Started, Updating mcdev, Admin Commands, and Git-based deployments and CI/CD retain explicitly pending/unreleased extension-bundled CLI and optional-Git guidance. Templating Commands and Advanced Configuration retain local behavior/safety corrections. These annotations are not evidence that the pending VS Code extension shipped. The shared Data Extension selection documentation was imported from the published wiki; the initial-push fix and boolean --purge / --no-purge fixes are marked released based on mcdev 10.1.1 release notes. The published wiki still labels the purge fix as pending, so the bundle corrects that stale label locally. Preserve or explicitly reconcile all remaining annotations during future refreshes.

License

MIT © Jörn Berkefeld

Available Tools

20 tools
diagnose_mcdev_project_configA

Read-only partial static diagnosis of .mcdevrc.json, not native mcdev validation or execution readiness. FIRST use the visual MCDev Pipeline Builder before editing configuration. Returns builder guidance, findings and explicit limitations; never writes files, loads hooks, reads auth or executes native CLI/live checks. Prevent concurrent filesystem mutation.

NameRequiredDescriptionDefault
workspaceRootYesCanonical absolute mcdev project root.

TDQS

A4.3/5.0
Behavior5/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 explicitly discloses read-only behavior, what is never done ('never writes files, loads hooks, reads auth or executes native CLI/live checks'), what is returned ('builder guidance, findings and explicit limitations'), and a concurrency caution ('Prevent concurrent filesystem 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?

Front-loads the core purpose and is generally efficient, but has mild redundancy between 'partial static diagnosis' and the later 'never writes... executes native CLI/live checks'. The final fragment 'Prevent concurrent filesystem mutation' is a bit terse and could be clearer.

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 one parameter, no output schema, and no annotations, the description covers purpose, limitations, return contents, and side-effect boundaries well. It leaves some ambiguity about what 'findings' and 'builder guidance' look like, but that is reasonable without an output schema.

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?

The single parameter workspaceRoot has 100% schema description coverage ('Canonical absolute mcdev project root.'). The description adds no parameter-specific meaning beyond the schema, which is the baseline for high schema coverage.

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 ('diagnosis') and resource ('.mcdevrc.json'), and explicitly scopes it as 'partial static' and 'not native mcdev validation or execution readiness'. This distinguishes it from raw config reads and from command execution tools in the sibling list.

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 context for use: 'FIRST use the visual MCDev Pipeline Builder before editing configuration' and reinforces it is not for native validation or execution readiness. However, it does not explicitly compare against sibling tools like read_mcdev_project_config or preview_mcdev_project_config, leaving some routing ambiguity.

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

diagnose_mcdev_retrieve_logsA
Read-only

Read-only historical normal-log diagnosis for one exact configured credential/businessUnit and query or script key. Reads only bounded project/logs timestamp files, never error companions or authentication/session contents. Requires caller-managed quiescence. Supports mcdev 10.1.0 and 10.1.1 canonical retrieve credential/BU type key with literal selectors and no options, aliases or quotes, within an explicit UTC ISO millisecond window of at most 24 hours. Returns finite observations and validated basename/time provenance, never raw logs, paths, errors, secrets or remote completeness. No subprocess, network, native execution, elicitation or rerun. Native calls with --noLogFile produce no historical logs; absent evidence is no-match, not a reason to repeat retrieval. Unknown records are suppressed; investigate manually when evidence is insufficient.

NameRequiredDescriptionDefault
keyYes
credentialYes
businessUnitYes
metadataTypeYes
startedAfterYes
startedBeforeYes
workspaceRootYes

TDQS

A4.2/5.0
Behavior5/5

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

Goes far beyond the readOnly/openWorld/destructive annotations: it discloses exactly what is read (bounded project/logs timestamp files, never error companions or auth/session content), what is excluded (no subprocess, network, native execution, elicitation, rerun), and what is returned (finite observations and basename/time provenance, never raw logs, paths, errors, secrets). It also flags the --noLogFile no-log case and unknown-record suppression, which an agent could not infer from annotations.

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?

Purpose and scope are front-loaded in the first sentence, and every clause carries constraints or exclusions rather than filler. However, several sentences are densely semicolon-packed run-ons (the window/format sentence crowds five restrictions together), making it harder to scan than it needs to be.

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 no-output-schema, seven-required-parameter diagnostic tool, it covers the essentials: quiescence, window bound, selector syntax, negative-evidence semantics, and the shape of the result ('finite observations and validated basename/time provenance'). The main residual gap is that the structure of those 'observations' is never characterized, so the agent must call blind on return shape.

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?

With 0% schema description coverage, the description has to carry all seven parameters and it mostly does: it pins credential/businessUnit to 'one exact configured' value, constrains metadataType to canonical retrieve query/script keys, and defines the startedAfter/startedBefore pair as a UTC ISO millisecond window of at most 24 hours. It also warns against options, aliases or quotes in selectors. workspaceRoot is never mentioned and exact key format is only implied, so it is not fully compensatory.

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?

Opens with a specific verb+resource: 'Read-only historical normal-log diagnosis for one exact configured credential/businessUnit and query or script key.' That is precise enough to distinguish it from run_mcdev_command and reconcile_mcdev_operation, which operate on live operations rather than historical log files. It stops short of explicitly naming which sibling to prefer, keeping it at 4.

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 real usage constraints: 'Requires caller-managed quiescence' and 'absent evidence is no-match, not a reason to repeat retrieval', plus 'investigate manually when evidence is insufficient'. These tell the agent when this tool applies and when to stop, but no sibling tool is named as an alternative for those cases.

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

inspect_mcdev_git_policyA

Read-only Git metadata inspection, not verified policy or execution readiness. Ancestry uses a local remote-tracking snapshot, not fresh remote state. Branch roles, ticket and commit-prefix conventions remain unresolved; remote BU synchronization is unknown. Top-level verified covers status metadata only; refs.verified is independent. Separate from inspect_mcdev_project auth protection checks. No policy persistence, branch changes, commit-message/history/auth/artifact-content reads or native mcdev/live execution. Prevent concurrent project/Git mutation; not an atomic snapshot.

NameRequiredDescriptionDefault
workspaceRootYesCanonical absolute mcdev project root.

TDQS

A3.8/5.0
Behavior5/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: read-only, no persistence, no branch/commit/history/auth/artifact reads, no native execution, ancestry based on a stale local remote-tracking snapshot, unknown remote BU synchronization, and non-atomic with a concurrency caveat. That is unusually rich disclosure of exactly the traits an agent needs before relying on results.

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

Conciseness3/5

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

It is front-loaded and every clause is arguably substantive, but the writing is a dense chain of negations and internal jargon ('top-level verified covers status metadata only; refs.verified is independent'), making it hard to parse on a first read. Tighter grouping of scope, limitations, and concurrency would improve it.

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 no annotations, no output schema, and one parameter, the description supplies scope, non-goals, staleness of ancestry data, partial verification semantics, and concurrency constraints. What it still omits is any hint of the shape of the returned metadata beyond vague mentions of 'verified' and 'refs', which would help the agent interpret the output.

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?

There is a single required parameter with 100% schema description coverage ('Canonical absolute mcdev project root'), so the schema already does the work. The description adds no further meaning about workspaceRoot (e.g., what happens if it's not a Git repo or not canonical), which fits the baseline 3 for full schema coverage.

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?

Opens with a specific verb+resource: 'Read-only Git metadata inspection', and explicitly separates itself from inspect_mcdev_project's auth protection checks, so it's distinguishable from the nearest sibling. However, the purpose is buried inside a string of caveats rather than stated as a clean sentence about what Git metadata is returned (status, refs, ancestry), which keeps it below 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?

The description draws one boundary ('Separate from inspect_mcdev_project auth protection checks') and warns to avoid concurrent project/Git mutation, which implies when it's appropriate. But it never says positively when to call this tool, nor names alternatives like inspect_mcdev_git_range, which most agents would need to disambiguate between the two Git inspection siblings.

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

inspect_mcdev_git_rangeA

Read-only Git metadata comparison of two explicit refs, not promotion policy or execution readiness. Optional declaredEdge assesses only exact-source-commit containment in the target, with the same source-to-target direction for promotion and back-promotion. Local snapshot only; remote freshness and remote BU synchronization are unknown. No inferred branch roles or backpromotions, auth/log/artifact/commit-content reads, branch changes or native mcdev/live execution. Prevent concurrent project/Git mutation; not an atomic snapshot. Separate from inspect_mcdev_project auth protection checks.

NameRequiredDescriptionDefault
sourceRefYesExplicit source branch or full ref, never a revision expression.
targetRefYesExplicit target branch or full ref, never a revision expression.
declaredEdgeNoOptional caller-declared intent; never reverses source and target.
workspaceRootYesCanonical absolute mcdev project root.

TDQS

A4.4/5.0
Behavior5/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: read-only, local snapshot only, unknown remote freshness/BU sync, no auth/log/artifact/commit-content reads, no branch changes or execution, and a concurrency/atomicity warning. These are concrete operational limits an agent needs before calling.

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?

The opening sentence front-loads the core operation, and subsequent clauses are dense but purposeful for a high-risk inspection tool. Some negation-heavy fragments make it read like a checklist, but there is little outright waste.

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?

The description is rich on scope, exclusions, and operational limits, which is important given no annotations. However, with no output schema, it never explains what the comparison returns—what metadata, containment result, or shape an agent should expect—so it is not fully complete for a tool whose output is central.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all four parameters; the description still adds value by explaining declaredEdge semantics—it assesses only exact-source-commit containment and preserves source-to-target direction even for back-promotion. That is meaningful beyond the enum and required params.

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 'Read-only Git metadata comparison of two explicit refs,' a specific verb and resource, and immediately scopes it away from promotion policy or execution readiness. The final clause distinguishes it from inspect_mcdev_project auth checks and implies separation from git policy, so an agent can route correctly.

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 says what it is not for ('not promotion policy or execution readiness') and separates it from inspect_mcdev_project auth protection checks, giving useful when-not context. It stops short of naming inspect_mcdev_git_policy as the alternative for policy checks and does not give a positive 'use this when...' trigger beyond the ref-comparison scope.

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

inspect_mcdev_projectA

Read the complete UNREDACTED project config, including credentials, and independently inspect Git ignore/index metadata for auth protection. Read-only: never reads auth contents or history and never repairs, stages or untracks files.

NameRequiredDescriptionDefault
workspaceRootYesCanonical absolute mcdev project root.

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 burden well by disclosing read-only behavior and explicit non-actions: it never reads auth contents or history and never repairs, stages, or untracks files. It still omits permission requirements and return behavior, but the core safety profile is clearly stated.

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 definition is two tightly packed sentences with no wasted language. The primary purpose is front-loaded, and the second sentence efficiently lists the read-only constraints.

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 no-output-schema inspection tool, the description gives a useful sense of what is read and what safety constraints apply. It could say more about the shape of the returned config/metadata, but it is largely complete for invocation.

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?

There is one parameter and schema description coverage is 100%, so the schema already explains workspaceRoot as the canonical absolute mcdev project root. The description adds no parameter-specific meaning beyond what the schema provides, making 3 the appropriate baseline.

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 states a specific verb and resource: read the complete unredacted project config, including credentials, and inspect Git ignore/index metadata for auth protection. The word UNREDACTED implicitly distinguishes it from read/preview config siblings, but it does not explicitly name or route against those alternatives.

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 to use it: when full unredacted config and Git auth-protection metadata are needed. It does not explicitly say when to choose it over read_mcdev_project_config, preview_mcdev_project_config, or the git-policy inspection siblings.

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

inventory_mcdev_project_artifactsB

Read-only, metadata-only inventory of configured retrieve/deploy paths; does not open artifact contents or confirm dependencies. Never reads auth contents or logs. No guarantee of remote freshness or an atomic filesystem sandbox; prevent concurrent filesystem mutation.

NameRequiredDescriptionDefault
maxDepthNo
maxEntriesNo
workspaceRootYesCanonical absolute mcdev project root.

TDQS

B3.4/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 read-only/metadata-only behavior, no remote-freshness guarantee, no atomic sandbox, and warns to prevent concurrent filesystem mutation. Missing only error/failure behavior (e.g. what happens if workspaceRoot is absent or paths are unconfigured).

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 dense sentences, front-loaded with the capability and followed by limits, with no filler. The second sentence compresses several distinct caveats into one run-on clause, which slightly hurts scanability but wastes nothing.

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 inventory with no output schema, the description covers scope and behavioral caveats adequately, but leaves the agent guessing about the shape of the returned inventory and about what maxDepth/maxEntries actually control. Adequate, not 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 33% – only workspaceRoot is documented. The description adds nothing about maxDepth or maxEntries, both of which have non-obvious bounds (1-12, 1-10000) and unclear interaction with the walk. With low coverage the description should compensate but instead ignores two of three parameters.

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: 'read-only, metadata-only inventory of configured retrieve/deploy paths.' It also draws a boundary against content-reading siblings by saying it 'does not open artifact contents', which separates it from read_mcdev_artifact_source and resolve_mcdev_project_artifact. It stops short of naming those alternatives 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 'does not / never' clauses (no contents, no dependency confirmation, no auth, no logs) give clear negative guardrails, so an agent knows what this tool will not answer. However there is no positive statement of when to reach for it versus resolve_mcdev_project_artifact or read_mcdev_artifact_source.

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

mcdev_component_checklistA

Return a structured checklist of questions and dependent metadata types for authoring or migrating SFMC components with mcdev (e.g. journey, automation).

NameRequiredDescriptionDefault
componentYesComponent key, e.g. "journey", "automation".

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It does disclose the return content (a checklist of questions plus dependent metadata types), which is the key behavioral fact and useful given there is no output schema. However, it says nothing about whether component keys are validated, what happens on an unknown key, or how dependency resolution is performed.

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 with the verb front-loaded and zero filler. Nothing could be removed without losing information.

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 one-parameter read tool with full schema coverage, the description is nearly sufficient, and it partly compensates for the absent output schema by characterizing the return value. It stops short of telling the agent how to discover valid component keys, which is relevant given the sibling list.

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% and the single `component` parameter is well documented, so the baseline is 3. The parenthetical examples ("journey, automation") merely repeat the schema's own examples and add no new semantics.

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?

Names a specific verb ("Return") and a concrete resource ("structured checklist of questions and dependent metadata types"), scoped to authoring/migrating SFMC components. It does not explicitly distinguish itself from siblings like mcdev_list_metadata_types, which also deals with metadata types, so an agent must infer the boundary.

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 phrase "for authoring or migrating SFMC components" gives an implicit usage context, but there is no statement of when NOT to use it and no named alternative (e.g. use mcdev_list_metadata_types to enumerate valid keys). The agent is left to infer.

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

mcdev_explain_config_keyA

Explain a .mcdevrc.json concept (markets, marketList, createDeltaPkg, deployment, validations, etc.) with a short summary and wiki file hints.

NameRequiredDescriptionDefault
topicYesTopic key or phrase. Known keys: build, createDeltaPkg, credentials, deployment, directories, marketList, markets, metaDataTypes, validations

TDQS

A3.5/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, and it does disclose the return shape ('short summary and wiki file hints'), which is useful. It says nothing about permissions, rate limits, or whether explanations are static or project-aware, so gaps remain.

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 front-loaded sentence that states the action, the target, examples, and the output in a compact form. The example key list slightly duplicates the schema's known-keys list, which is minor 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?

For a single-parameter, read-only explainer with 100% schema coverage and no output schema, the description is nearly sufficient: it names the target concept space and what comes back (summary plus wiki hints). Only the relationship to sibling lookup tools is left implicit.

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 100% and the single 'topic' parameter already documents its known keys in the schema description. The description's parenthetical key list adds no semantics beyond the schema, so the baseline 3 applies.

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 (Explain) and resource (.mcdevrc.json concept) and gives concrete example keys, so the agent knows exactly what it returns. It does not explicitly differentiate from siblings like read_mcdev_project_config or mcdev_search_docs, which keeps it from 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 only implied: an agent can infer this is for learning what a config concept means, as opposed to read_mcdev_project_config (reads an actual project's values) or mcdev_search_docs (free-text docs search). No explicit when-to-use or when-not-to-use statement is given.

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

mcdev_get_commandA

Read-only exact, case-sensitive native command or alias lookup. Returns signature, execution availability and effects; use the canonical name with run_mcdev_command when supported. Lookup grants no approval, launches no process and is not a dry run. Project readiness remains unverified.

NameRequiredDescriptionDefault
nameOrAliasYesExact canonical command name or alias, never argv.

TDQS

A4.8/5.0
Behavior5/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: it declares read-only behavior, no side effects (no approval, no process launch, not a dry run), and flags that project readiness is unverified. It also discloses the returned fields, which matters since there is no output schema.

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?

Four short sentences, front-loaded with the core identity before caveats. Every clause carries information, though the final 'Project readiness remains unverified' is terse enough to be slightly ambiguous without supporting context.

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

Completeness5/5

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

For a one-parameter lookup with no output schema, the description covers purpose, return content, safety profile, and next-step routing. Nothing an agent needs in order to call it correctly appears to be missing.

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

Parameters4/5

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

Schema coverage is 100%, so the single parameter is already documented, giving a baseline of 3. The description adds meaningful nuance by stressing 'exact' and 'case-sensitive' lookup semantics beyond the schema's wording, though it does not explain lookup failure behavior for near-matches.

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 and resource ('exact, case-sensitive native command or alias lookup') plus what is returned (signature, execution availability, effects). This clearly separates it from sibling tools like mcdev_list_commands (enumeration) and run_mcdev_command (execution).

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

Usage Guidelines5/5

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

Explicitly routes the agent: use the canonical name with run_mcdev_command once supported, and the lookup itself grants no approval, launches no process, and is not a dry run. This names the alternative and the condition that selects it, leaving little to inference.

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

mcdev_get_doc_sectionA

Retrieve an unreviewed bundled wiki section by its search Source ID. Returns a JSON page with UTF-16 offsets and nextOffset (null at end); retrieved claims are not semantic endorsements.

NameRequiredDescriptionDefault
idYesOpaque Source ID returned by mcdev_search_docs.
limitNoPage length (default 4000, maximum 12000).
offsetNoUTF-16 offset (default 0).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden and discloses important behavior: it returns a JSON page with UTF-16 offsets and nextOffset null at the end, and retrieved claims are not endorsements. It does not cover auth or rate limits, but for a retrieval tool the key return and pagination behavior is documented.

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 compact and front-loaded with the core action, followed by return and pagination details. Every clause contributes useful information without 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?

No output schema exists, so the description must explain the return value; it does so by describing the JSON page, offsets, and end-of-pagination signal. With complete parameter schema coverage, this is sufficient for correct invocation, though explicit error behavior is not covered.

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 100%, with id, limit, and offset all fully described in the input schema. The description adds little beyond identifying id as a Source ID from search, so the baseline of 3 is appropriate when the schema does the detailed work.

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: retrieve a bundled wiki section by its search Source ID. It also notes the section is unreviewed, which helps distinguish this retrieval tool from search and review-oriented siblings.

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 its search Source ID' gives clear usage context: this tool is a follow-up to mcdev_search_docs. It does not explicitly name alternatives or exclusions, but the prerequisite is clear enough for an agent to select it correctly.

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

mcdev_list_commandsA

Read-only native mcdev command discovery: signatures, aliases, execution availability and effects. Use run_mcdev_command for supported commands with explicit arguments and ordinary host approval. Listing itself performs no subprocess or dry run; native mcdev has no dry-run mode. Project readiness is not verified.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so well: it discloses that the operation is read-only, performs no subprocess or dry run, notes there is no native mcdev dry-run mode, and clarifies that project readiness is not verified. These are substantive behavioral traits beyond what structured fields provide.

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 four sentences, front-loaded with the core purpose and then adding usage contrast and behavioral caveats. Every sentence contributes useful information without padding.

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?

Given zero parameters, no output schema, and no annotations, the description is complete enough: it states the return-ish content (signatures, aliases, execution availability and effects), clarifies what listing does not do (no subprocess/dry run), and notes the project-readiness limitation. Nothing critical is missing for an agent to call it 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?

The tool has zero parameters, so the baseline is 4. The description appropriately does not waste space on parameter semantics when none exist.

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 states a specific verb and resource ('Read-only native mcdev command discovery: signatures, aliases, execution availability and effects'), making the tool's function clear. It distinguishes itself from the execution sibling (run_mcdev_command) but does not explicitly differentiate from mcdev_get_command, which likely retrieves a single command.

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?

It names the execution alternative ('Use run_mcdev_command for supported commands with explicit arguments and ordinary host approval'), giving clear context for when to use that tool instead. However, it does not explicitly state exclusions for single-command retrieval (mcdev_get_command) or other discovery tools, leaving some alternative routing implicit.

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

mcdev_list_metadata_typesB

List metadata types supported by the installed mcdev package (from Mcdev.explainTypes). Optional filter substring.

NameRequiredDescriptionDefault
filterNoCase-insensitive filter on name or apiName.

TDQS

B3.4/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 usefully discloses that the list is derived from the installed package (Mcdev.explainTypes), meaning results vary by version, and 'List' implies a read operation. It does not state return shape, ordering, or whether the result is exhaustive.

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 compact sentence that front-loads the action and resource, with the optional filter noted at the end. No filler, nothing redundant.

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 no-required-param, read-only listing tool with full schema coverage, the definition plus source provenance is nearly sufficient. The one omission is any hint about what the returned type entries look like, which matters slightly since no output schema exists.

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 the filter as 'Case-insensitive filter on name or apiName.' The description's 'Optional filter substring' merely restates this at a higher level and adds no new syntax or matching detail. Baseline 3 applies.

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: lists metadata types, and identifies the data source (installed mcdev package / Mcdev.explainTypes). An agent can distinguish it from search_docs or explain_config_key, though it never explicitly names a sibling to sharpen the contrast.

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 prerequisites, and no alternatives named among the four sibling tools. The agent must infer that this is the discovery step for available metadata types before other mcdev operations.

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

mcdev_search_docsB

Search bundled sfmc-devtools wiki Markdown (from GitHub wiki) for mcdev configuration, commands, markets, createDeltaPkg, build, validations.

NameRequiredDescriptionDefault
limitNoMax results (default 8).
queryYesSearch query (keywords).

TDQS

B3.4/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 behavioral burden. It does usefully disclose the corpus origin (bundled Markdown sourced from the GitHub wiki), implying local/offline retrieval and possible staleness, but says nothing about ranking, snippet format, or freshness relative to the live wiki.

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 corpus stated first, followed by the topical scope. No filler, though the trailing keyword list reads more like tags than prose.

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?

Adequate for a two-parameter search tool, but with no output schema and no annotations the description leaves the return shape (file paths? snippets? scores?) unstated and gives no hint about result freshness or whether the query supports multiple keywords. Minimum viable rather than complete.

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 (query, limit with default 8 and max 25) are already documented in the schema. The description adds only topical keyword hints for what a query should contain; baseline 3 applies when the schema does the heavy lifting.

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 (Search) and a precisely bounded resource (bundled sfmc-devtools wiki Markdown from GitHub wiki), plus the topical coverage: configuration, commands, markets, createDeltaPkg, build, validations. This scope makes it distinguishable from topical siblings like mcdev_explain_config_key, though no sibling is named 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 topic list implies when the tool is useful (questions about mcdev config, commands, build/validation), but there is no explicit when-to-use vs. when-not guidance and no routing to alternatives such as mcdev_explain_config_key for single-key questions. Usage is left to inference.

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

preview_mcdev_project_commandB

Read-only, guidance-only project-qualified retrieve/deploy preview. Verifies only the explicit credential/businessUnit config mapping; execution readiness and configured paths remain unknown. Generic native effects are not proven project-local effects. No subprocess, hooks, auth/log reads or live checks. Not a dry run: native mcdev has no dry-run mode. Execution remains disabled; this cannot authorize an operation. Prevent concurrent filesystem mutation.

NameRequiredDescriptionDefault
keyYesOne explicit literal external key; no CSV or wildcards.
typeYesReviewed type: automation, asset-email, dataExtension, query or script.
commandYes
optionsNoCanonical reviewed options only; command/type compatibility is checked by the adapter. These describe native guidance, never execution.
credentialYesExact project credential mapping name.
businessUnitYesExact businessUnit alias within this credential.
workspaceRootYesCanonical absolute mcdev project root.

TDQS

B3.4/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 explicitly states read-only, guidance-only, no subprocess/hooks/auth-log reads/live checks, execution disabled, cannot authorize. It does not describe what the tool actually returns or whether it reads files, but the negative behavioral profile is unusually thorough.

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

Conciseness3/5

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

The description is front-loaded with the key safety profile, but it is a dense, repetitive paragraph of mostly negative clauses. Sentences like 'Generic native effects are not proven project-local effects' are abstract, and 'Prevent concurrent filesystem mutation' is unclear in context.

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 7-parameter tool with a nested options object and no output schema, the description is incomplete on the positive side: it never explains what the preview returns, what 'guidance-only' concretely means, or how to interpret the result. It also provides no sibling differentiation, leaving an agent without enough to call it confidently.

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 86%, so the schema already documents most parameters (including options) well. The description adds no parameter-specific meaning beyond what the schema provides; it only references credential/businessUnit mapping, which is already in the schema.

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 states a specific verb and resource: a 'retrieve/deploy preview' for an mcdev project, qualified by credential/businessUnit. It distinguishes itself from execution ('Not a dry run', 'execution remains disabled'), but it does not name or differentiate from siblings like run_mcdev_command or preview_mcdev_project_config.

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: call this to preview a retrieve/deploy command before execution, and it only verifies credential/businessUnit mapping. There is no explicit when-to-use vs alternatives, no prerequisites stated, and no exclusions beyond 'execution remains disabled'.

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

preview_mcdev_project_configA

Read-only comparison of the current .mcdevrc.json and a complete proposed JSON document, not a patch. FIRST use the visual MCDev Pipeline Builder before editing configuration. Returns full unredacted changes and partial static proposed diagnosis within a whole-result byte budget; no truncation. Inputs are at most 1 MiB each. Hashes describe rawText encoded as UTF-8 without normalization, not independently verified original filesystem bytes. No writes, apply authorization, native validation, execution readiness or atomic filesystem binding. Prevent concurrent filesystem mutation. Never reads auth or logs, loads hooks or performs native/live checks.

NameRequiredDescriptionDefault
workspaceRootYesCanonical absolute mcdev project root.
maxOutputBytesNoWhole-result JSON UTF-8 budget (default 65536, maximum 1048576); fixed builder notice is additional.
proposedConfigYesComplete proposed JSON document, not a patch; at most 1 MiB UTF-8.

TDQS

A4/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so: it discloses no writes/apply authorization/native validation, no auth/logs/hooks/live checks, concurrency caution, input size caps, UTF-8 hashing semantics, and byte-budgeted output. This is unusually complete for a preview 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?

The purpose is front-loaded and most clauses are substantive, but the single dense paragraph piles caveats with semicolons and some legalistic phrasing ('native validation, execution readiness or atomic filesystem binding') that is harder to parse than necessary. It is still appropriately sized for a high-complexity read-only preview tool.

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, and the description nevertheless explains the return shape enough (full unredacted changes plus partial static proposed diagnosis within a byte budget), input limits, safety boundaries, and concurrency expectations. An agent has enough to decide and call it correctly.

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 baseline is 3; the description reinforces 'complete document, not a patch' and the 1 MiB input cap but adds little parameter meaning beyond the schema. Hash semantics are output-related, not parameter semantics.

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 first sentence names a specific verb (read-only comparison) and both resources (.mcdevrc.json and a complete proposed JSON document), and rules out a patch. It does not name or route against sibling config tools such as read_mcdev_project_config or diagnose_mcdev_project_config, 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?

It gives workflow context ('before editing configuration') and a prerequisite to use the visual builder first, plus non-goals, but it never states when to call this versus read_mcdev_project_config or diagnose_mcdev_project_config. Usage is inferable as a preview-before-edit check, not explicitly prescribed.

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

read_mcdev_artifact_sourceA

Read-only full-text editable-source handoff for one qualified query, script or bounded asset-email identity (htmlemail/templatebasedemail matched by customerKey with exact HTML/preheader/text extracts), never a caller-supplied file path. Requires exactly one editable companion unless an explicit sourceRole selects html, preheader or text from resolved email companions; multiple companions need an explicit role or are blocked with no source and no guessed choice. sourceRole accepts no arbitrary filenames or paths and applies only to resolved email companions. Dependencies are not confirmed. Returns complete original UTF-8 text (including BOM) and SHA-256 of original file bytes without truncation; unresolved or blocked results never contain source. No rendering, validation, mutation, native modules or live execution is performed; execution readiness is unknown. The host must discover companion capabilities and coordinate platform detection, identifier lookup and full-document validate_ssjs, validate_sfmc_html or validate_ampscript as appropriate. Email html requires validate_sfmc_html; preheader/text have language text and text-validator-not-established, not an inferred AMPscript validator. SQL validation is not established. Do not claim companion tools were performed. Prevent concurrent filesystem mutation: bounded checks are not atomic or a concurrent-mutation sandbox. Never reads auth contents or logs.

NameRequiredDescriptionDefault
maxDepthNo
rootKindYes
credentialYes
maxEntriesNo
sourceRoleNo
externalKeyYes
businessUnitYes
metadataTypeYesquery, script or asset-email (bounded htmlemail/templatebasedemail layouts only).
workspaceRootYesCanonical absolute mcdev project root.

TDQS

A4/5.0
Behavior5/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 thoroughly: returns complete original UTF-8 text including BOM plus SHA-256 of original bytes, no truncation, unresolved or blocked results never contain source, no rendering/validation/mutation/live execution, execution readiness unknown, bounded checks are not atomic against concurrent filesystem mutation, and auth contents and logs are never read. These are non-obvious safety and output-shape facts an agent could not infer from schema or name.

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

Conciseness3/5

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

Nearly every sentence carries real information and the read-only/no-source-on-failure constraint is front-loaded, but the delivery is a dense run-on of fragments and negations that is hard to parse on first read. It would benefit from grouping output shape, blocking rules and validation handoff into separate statements.

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 complex, no-annotation, no-output-schema tool, the description covers output format, failure behavior, blocking rules, safety limits and the validation handoff the host must perform. The remaining gaps are the seven undocumented parameters (identity, root, credential, bounds) that an agent must resolve purely from schema.

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 only 22% across 9 parameters, and the description meaningfully explains sourceRole semantics (resolved email companions only, no arbitrary filenames or paths) and constrains metadataType to bounded htmlemail/templatebasedemail layouts. But workspaceRoot, rootKind, credential, businessUnit, externalKey, maxDepth and maxEntries receive no explanation anywhere, so the description only partially compensates for the coverage 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 and resource ('read-only full-text editable-source handoff for one qualified query, script or bounded asset-email identity') and enumerates the metadata types, and it explicitly distinguishes itself from path-based readers ('never a caller-supplied file path'). The phrasing is dense and jargon-laden, but an agent can tell what it retrieves and what it does not.

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 use conditions and blockers: exactly one editable companion required, multiple companions need an explicit sourceRole or are blocked, sourceRole applies only to resolved email companions, email html requires validate_sfmc_html, SQL validation not established. It routes the agent toward validate_ssjs/validate_sfmc_html/validate_ampscript, though it names them as capabilities to discover rather than as named sibling tools.

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

read_mcdev_project_configA

Read the complete, UNREDACTED .mcdevrc.json, including credentials and custom fields, from a canonical absolute project root. Returns original raw text; never reads .mcdev-auth.json.

NameRequiredDescriptionDefault
workspaceRootYesAbsolute path to the mcdev project root containing `.mcdevrc.json`.

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 behavioral burden and does well: it discloses that credentials are included, that raw text is returned, and that `.mcdev-auth.json` is never read. It does not describe failure behavior if the file is missing or inaccessible, which prevents 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?

Two tightly written sentences with no waste. The key distinction—unredacted output—is front-loaded, and the auth file exclusion follows 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 simple one-parameter read tool with no output schema, the description covers return format and scope sufficiently. It would be stronger if it mentioned behavior when the config file is absent or unreadable, but no critical decision information is missing.

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 100% and the single `workspaceRoot` parameter is already documented as an absolute path to the mcdev project root. The description reinforces 'canonical absolute project root' but adds no syntax or validation details beyond 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?

The description states a specific verb (read) and resource (`.mcdevrc.json`), and distinguishes this from the auth file explicitly. It also specifies the scope: complete, unredacted contents, raw text, from a canonical absolute project root.

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 description makes clear when this tool is appropriate: when the full unredacted config is needed. It does not explicitly name the sibling alternatives such as `preview_mcdev_project_config` or `diagnose_mcdev_project_config`, but the 'UNREDACTED' framing strongly implies the distinction.

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

reconcile_mcdev_operationA

Release an uncertain native-operation latch only after the operator has confirmed all related processes stopped and reconciled partial local/remote effects. This acknowledgement does not perform or verify reconciliation, kill processes, retry commands or authorize a new operation. Never call solely because a server restarted or a timeout elapsed.

NameRequiredDescriptionDefault
workspaceRootYes
operatorReconciledYes

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond annotations by enumerating what the call does NOT do — no reconciliation, no process killing, no retry, no authorization of a new operation — which prevents the agent from over-trusting it as a recovery action. This is exactly the kind of caveat structured fields cannot carry, and it is consistent with readOnlyHint=false/destructiveHint=false (a state-clearing acknowledgement, not a destructive write).

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 what the tool does, then the negative scope, then the anti-pattern trigger. Every sentence adds a distinct constraint; nothing is redundant.

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 two-parameter acknowledgement tool with no output schema and annotations already declaring safety, the description covers safety, preconditions, and misuse well. It leaves gaps on the workspaceRoot scoping and on behavior when the acknowledgement is given prematurely or the latch is already clear (idempotency).

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 carry the burden. It implicitly explains operatorReconciled (the operator must have confirmed), but never names either parameter and gives no guidance on workspaceRoot scoping. 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 ('Release') and resource ('an uncertain native-operation latch under operator acknowledgement') with the precondition baked in. The negative framing ('does not perform or verify reconciliation, kill processes, retry commands or authorize a new operation') distinguishes it from siblings like run_mcdev_command and preview_mcdev_project_command. Slightly opaque jargon ('native-operation latch') keeps it off 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 Guidelines5/5

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

Gives an explicit positive trigger ('only after the operator has confirmed all related processes stopped and reconciled partial local/remote effects') and an explicit exclusion ('Never call solely because a server restarted or a timeout elapsed'). No inference required — the agent knows both when and when not to call.

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

resolve_mcdev_project_artifactB

Read-only qualified local resolution for query, script and bounded asset-email layouts (htmlemail/templatebasedemail matched by customerKey, with exact HTML/preheader/text extract companions); other types and layouts are unsupported. Returns paths, not arbitrary file contents, and does not confirm dependencies. Blocked/ambiguous results offer no editable companions. Never reads auth contents or logs. No guarantee of remote freshness or an atomic filesystem sandbox; prevent concurrent filesystem mutation.

NameRequiredDescriptionDefault
maxDepthNo
rootKindYes
credentialYes
maxEntriesNo
externalKeyYes
businessUnitYes
metadataTypeYesquery, script or asset-email (bounded htmlemail/templatebasedemail layouts only).
workspaceRootYesCanonical absolute mcdev project root.

TDQS

B3.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 substantial work: read-only, returns paths not contents, no dependency confirmation, blocked/ambiguous yields no editable companions, never reads auth or logs, no remote-freshness guarantee, no atomic sandbox. It omits error/edge behavior for invalid credentials or missing roots, but the disclosure is well above average for an unannotated tool.

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

Conciseness3/5

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

The capability is front-loaded in the first sentence, but it is a dense multi-clause run-on packed with qualifiers ('bounded', 'companions', 'qualified') that slows parsing. Later sentences earn their place as constraints; the closing concurrency warning is useful but slightly tacked on.

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?

No annotations and no output schema mean the description should clarify return shape and parameter meaning, but it only says 'returns paths' without structure, and five parameters remain undocumented. For an 8-param, 6-required tool this leaves real gaps an agent must guess at.

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 only 25%: metadataType and workspaceRoot are documented in the schema, and the description adds meaning for metadataType and hints at externalKey as customerKey matching. However, rootKind (retrieve/deploy), credential, businessUnit, maxDepth, and maxEntries are unexplained in both schema and description, leaving most of the 8 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?

The description states a specific resource (local project artifacts) and enumerates the supported metadata types and layouts, then clarifies the output is paths rather than file contents. 'Qualified local resolution' is jargon-heavy, but the added sentence 'Returns paths, not arbitrary file contents' pins down the actual operation and implicitly separates it from read_mcdev_artifact_source.

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 exclusion ('other types and layouts are unsupported') and scope boundaries, but never names a sibling alternative or says when to prefer this over inventory_mcdev_project_artifacts or read_mcdev_artifact_source. The agent must infer the routing condition from the type list.

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

run_mcdev_commandA
Destructive

Execute an explicitly requested native mcdev command in a developer-controlled project. Use mcdev_get_command for syntax and execution availability. args are exact argv tokens after the canonical command, not a shell string. Supports native metadata selectors, markets, validation hooks and native overwrite/deletion/auth-persistence effects. Supply explicit target/choices; no terminal interaction or automatic defaults. Deploy/runtime effects require the corresponding user request and ordinary host approval; no extra consent ritual. Diagnostics are bounded projections, not raw output. Completion is not independent remote verification; never automatically retry partial/unknown operations. Configure host timeouts for long operations; progress is emitted when requested.

NameRequiredDescriptionDefault
argsYes
commandYes
timeoutMsNo
workspaceRootYes

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint=true, openWorldHint=true, idempotentHint=false) by naming the specific side effects (overwrite/deletion/auth-persistence), stating that deploy/runtime effects need a user request plus host approval, that no terminal interaction or auto-defaults occur, that diagnostics are bounded projections, and that partial/unknown operations must never be auto-retried. This is exactly the extra context annotations cannot express.

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?

Purpose and the argv-vs-shell-string distinction are front-loaded, and nearly every sentence carries a distinct operational rule. The style is telegraphic and dense, and the timeout/progress sentence sits at the tail where it is easy to miss.

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 destructive, open-world tool with no output schema, the description covers side effects, consent/approval expectations, retry policy, and the nature of diagnostics. The remaining gaps are the meaning of workspaceRoot and timeoutMs, and where valid command values come from beyond a pointer to mcdev_get_command.

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%, so the description must carry the load. It does well for args ('exact argv tokens after the canonical command, not a shell string') and partially for command (native mcdev command, consult mcdev_get_command), but workspaceRoot is never explained and timeoutMs is only obliquely referenced by 'Configure host timeouts for long operations' with no units or bounds.

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?

Names a specific verb+resource (execute a native mcdev command) and adds a scoping qualifier ('explicitly requested', 'developer-controlled project'). It distinguishes itself from mcdev_get_command, which it routes syntax lookups to, but never contrasts with the sibling preview_mcdev_project_command, which is the closest alternative for dry-run style invocation.

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 directs syntax/availability questions to mcdev_get_command and states operational rules: 'Supply explicit target/choices; no terminal interaction or automatic defaults' and 'Deploy/runtime effects require the corresponding user request and ordinary host approval.' No explicit when-not-to-use guidance relative to preview_mcdev_project_command, so it stops 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. 15 tool updatesv2.0.0
    • Addeddiagnose_mcdev_project_config
    • Addeddiagnose_mcdev_retrieve_logs
    • Addedinspect_mcdev_git_policy
    • Addedinspect_mcdev_git_range
    • Addedinspect_mcdev_project
    • Addedinventory_mcdev_project_artifacts
    • Addedmcdev_get_command
    • Addedmcdev_get_doc_section
    • Addedmcdev_list_commands
    • Addedpreview_mcdev_project_command
    • Addedpreview_mcdev_project_config
    • Addedread_mcdev_artifact_source
    • Addedreconcile_mcdev_operation
    • Addedresolve_mcdev_project_artifact
    • Addedrun_mcdev_command
  2. 5 tool updatesv1.0.0
    • Changedmcdev_component_checklist1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedmcdev_explain_config_key1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedmcdev_list_metadata_types1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedmcdev_search_docs1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedread_mcdev_project_config1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  3. 5 tool updatesv0.1.1
    • First observedmcdev_component_checklist
    • First observedmcdev_explain_config_key
    • First observedmcdev_list_metadata_types
    • First observedmcdev_search_docs
    • First observedread_mcdev_project_config

TDQS

B3.3/5.0

Scored across 20 tools

Disambiguation2/5

Several tools read/diagnose the same .mcdevrc.json resource: read_mcdev_project_config, inspect_mcdev_project, diagnose_mcdev_project_config, and preview_mcdev_project_config all overlap heavily, and preview_mcdev_project_command vs diagnose_mcdev_project_config are easily confused. An agent will struggle to pick the right config-inspection tool, and warnings inside descriptions (e.g. 'use the visual MCDev Pipeline Builder FIRST') signal boundary problems rather than resolve them.

Naming Consistency2/5

Two competing conventions coexist: a mcdev_ prefix pattern (mcdev_get_command, mcdev_list_commands, mcdev_search_docs) and a verb-first pattern (diagnose_mcdev_project_config, read_mcdev_project_config, inspect_mcdev_git_policy). The verb ordering is inconsistent across the set, so a predictable grouping is hard to infer even though everything is snake_case.

Tool Count3/5

20 tools is in the heavy range for a server whose core purpose is mcdev project inspection and command execution. Many are narrow read-only variants (git_policy vs git_range, artifact inventory vs resolve vs read), which inflates the surface more than the domain complexity strictly requires.

Completeness3/5

run_mcdev_command gives a broad escape hatch for native operations, and doc/command discovery is reasonably covered. However the surface is read/diagnose-heavy with no clear write/apply path for config or artifacts (only previews), and many operations are explicitly declared out of scope, leaving notable gaps for a complete authoring lifecycle.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search and read offline documentation from synced libraries via MCP tools, providing hybrid keyword and semantic search without network calls.
    18 npm
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to search, install, read, and navigate DevDocs documentation offline via MCP, with token-efficient search/read/toc tools and local caching.
    6
    8 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables an AI agent to query a fully local, offline index of OpenKore's official wiki and Perl source code, answering configuration questions, retrieving symbol bodies and file:line references, and revealing options that exist in code but are not documented. Exposes nine MCP tools, including hybrid documentation search, source lookup, and gap analysis between the wiki and the codebase.
    -