WhenLabs/When
@whenlabs/when
Шесть инструментов. Одна установка.
Единый устанавливаемый набор инструментов, который добавляет шесть инструментов разработчика WhenLabs в ваш рабочий процесс Claude Code. После установки инструменты предоставляются через один MCP-сервер, и Claude вызывает их автоматически, когда это необходимо.
Установка
npx @whenlabs/when installОднократная настройка. Установщик:
Регистрирует один MCP-сервер (
whenlabs) в вашей конфигурации Claude CodeВнедряет блок CLAUDE.md, чтобы Claude знал, когда использовать каждый инструмент
Удаляет любую устаревшую регистрацию
velocity-mcp(velocity теперь включен в состав)
Related MCP server: devflow-mcp
Шесть инструментов
Инструмент | Назначение |
aware | Автоматическое определение стека и генерация файлов контекста для ИИ (CLAUDE.md, |
berth | Обнаружение конфликтов портов перед запуском серверов разработки |
envalid | Проверка файлов |
stale | Обнаружение расхождений между документацией и кодом |
vow | Сканирование лицензий зависимостей и проверка на соответствие политике |
velocity | Отслеживание времени выполнения задач программирования и обучение на исторических данных |
MCP-инструменты
Семь конечных точек для шести инструментов:
Конечная точка | Что она делает |
| Определение стека и повторная генерация файлов контекста для ИИ |
| Сканирование проекта на наличие конфликтов портов |
| Проверка файлов |
| Обнаружение расхождений в документации |
| Сканирование лицензий и проверка на соответствие политике |
| Начало отсчета времени задачи программирования |
| Завершение отсчета времени и запись результатов |
Все семь обслуживаются одним MCP-сервером whenlabs (stdio, Node 20+). Команды исправления/инициализации/вспомогательные команды остаются доступными через CLI каждого инструмента (npx @whenlabs/<tool> --help).
CLI
when init # Onboard a project — detect stack, bootstrap configs, run all checks
when doctor # Run all six tools and show a unified health report
when install # Register MCP server in Claude Code
when uninstall # Remove MCP serverДля операций с отдельными инструментами используйте инструмент напрямую:
npx @whenlabs/stale scan
npx @whenlabs/envalid validate
npx @whenlabs/berth check
npx @whenlabs/aware sync
npx @whenlabs/vow scanРучная настройка MCP
Если вы не используете команду install, добавьте это в свою конфигурацию MCP для Claude Code:
{
"mcpServers": {
"whenlabs": {
"command": "npx",
"args": ["@whenlabs/when", "when-mcp"]
}
}
}Лицензия
MIT — см. LICENSE
Available Tools
7 toolsaware_syncA
Detect the project's tech stack and regenerate AI context files (CLAUDE.md, .cursorrules, .windsurfrules, AGENT.md) from the project's .aware.json config.
When to use: after adding or removing a framework/language, when AI context files fall out of date, or when onboarding a new agent to the repo. Do not call on every turn — run once per session or after stack changes.
Side effects: reads package.json, requirements.txt, pyproject.toml, go.mod, Cargo.toml, and similar manifest files to detect the stack. Writes or overwrites CLAUDE.md, .cursorrules, .windsurfrules, and AGENT.md in the project root based on .aware.json templates. Never modifies source code.
Returns: plain-text summary listing the detected stack, the files written (or that would be written, in dry-run mode), and any errors. Exit 0 on success, non-zero on failure.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Absolute or relative path to the project root. Defaults to the current working directory. | |
| dryRun | No | When true, report the files that would be written without touching disk. Use this to preview changes before committing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so effectively. It details side effects (reads manifest files, writes/overwrites specific AI context files), explicitly states what it does not do ('Never modifies source code'), and describes the return behavior (plain-text summary, exit codes). It could improve by mentioning potential performance impact or file permission requirements, but covers core behavioral traits well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with clear sections: purpose statement, usage guidelines, side effects, and return behavior. Every sentence adds essential information with zero waste. It's appropriately sized for a tool with multiple behaviors and parameters, and front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters, no annotations, and no output schema, the description provides comprehensive context about behavior, side effects, and returns. It covers what the tool does, when to use it, what files it interacts with, and the output format. It could slightly improve by explicitly mentioning error handling details or dependencies, but is largely complete for the given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description adds value by explaining the practical implications of the 'dryRun' parameter ('report the files that would be written without touching disk') and suggesting usage ('Use this to preview changes before committing'), which goes beyond the schema's technical definition. It doesn't elaborate on 'path' parameter semantics, but the schema coverage is already complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('detect', 'regenerate') and resources ('tech stack', 'AI context files'), and distinguishes it from siblings by focusing on configuration file generation rather than validation, scanning, or task management. It explicitly names the files involved (CLAUDE.md, .cursorrules, etc.) and the configuration source (.aware.json).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use ('after adding or removing a framework/language', 'when AI context files fall out of date', 'when onboarding a new agent') and when not to use ('Do not call on every turn — run once per session or after stack changes'). It clearly differentiates this from sibling tools by its specific use case of maintaining AI context files based on tech stack detection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
berth_checkA
Scan a project for port conflicts between ports declared in common dev-server config sources (.env files, package.json scripts, docker-compose.yml, devcontainer.json, Procfile, Makefile, framework defaults, and a project-local .berthrc) and ports currently listening on the host.
When to use: before running npm run dev, docker compose up, or any other dev-server command — especially after switching branches in a monorepo where multiple services may want the same port. Safe to call repeatedly; read-only and side-effect free.
Side effects: enumerates listening TCP ports on the host via platform-appropriate commands (lsof on macOS/Linux, netstat on Windows) and inspects running Docker containers for published ports. Reads only the config files listed above; never opens, closes, or binds any ports. No network I/O beyond local loopback checks.
Returns: plain-text (or JSON) report listing each configured port, whether it is free or in use, and — for occupied ports — the PID and process name of the holder. Exit 1 when a conflict is detected, 0 otherwise.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Absolute or relative path to the project root to scan. Defaults to the current working directory. | |
| format | No | Response format: "terminal" for human-readable ANSI-colored output, "json" for machine-parseable structured data, "markdown" for rendered tables (where supported). Defaults to "terminal". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so comprehensively. It details side effects ('enumerates listening TCP ports... reads only the config files... never opens, closes, or binds any ports'), safety aspects ('read-only and side-effect free'), and operational specifics like platform-dependent commands and exit codes, going well beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose. Each sentence adds necessary information (usage guidelines, side effects, returns), but it could be slightly more streamlined by integrating some details more tightly, though no content is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool (port scanning with multiple config sources and platform variations), no annotations, and no output schema, the description is highly complete. It covers purpose, usage, behavior, side effects, return values, and exit codes, providing all essential context for an AI agent to understand and invoke the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description adds value by implicitly contextualizing the 'path' parameter as the 'project root to scan' and the 'format' parameter's purpose in the 'Returns' section, but it doesn't provide additional syntax or format details beyond what the schema already documents, warranting a score above baseline but not the highest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Scan a project for port conflicts') and resources ('ports declared in common dev-server config sources'), distinguishing it from sibling tools like 'aware_sync' or 'envalid_validate' which likely perform different functions. It explicitly identifies what it does without being tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool ('before running `npm run dev`, `docker compose up`, or any other dev-server command — especially after switching branches in a monorepo'), including specific scenarios and timing. It also mentions it's 'Safe to call repeatedly,' which helps differentiate usage patterns from other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
envalid_validateA
Validate a project's .env files against its envalid schema — catch missing required variables, type mismatches, and values outside allowed ranges.
When to use: before booting the app locally, during CI, after a teammate adds a new required env var, or when switching between development and production configs. Pass environment to validate a specific .env.{env} file.
Side effects: reads .env, .env.local, and .env.{environment} from the project root, and reads the envalid schema (typically src/env.ts or a similar file exporting cleanEnv(...)). Does not write or transmit env values anywhere — validation is local-only.
Returns: plain-text, JSON, or markdown report listing each declared variable, whether it is present, whether its value matches the expected type, and any schema-level validation errors with file:line references. Exit 1 on any validation failure.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Absolute or relative path to the project root to scan. Defaults to the current working directory. | |
| format | No | Response format: "terminal" for human-readable ANSI-colored output, "json" for machine-parseable structured data, "markdown" for rendered tables (where supported). Defaults to "terminal". | |
| environment | No | Environment name to validate (e.g. "production", "staging", "test"). Controls which .env.{environment} file is loaded and which conditional schema rules apply. Omit to validate the default .env/.env.local pair. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and excels. It details side effects: 'reads .env, .env.local, and .env.{environment} from the project root, and reads the envalid schema.' It explicitly states safety: 'Does not write or transmit env values anywhere — validation is local-only.' It describes output behavior: 'Returns: plain-text, JSON, or markdown report... Exit 1 on any validation failure.' This covers critical behavioral traits beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by usage guidelines, side effects, and return behavior. Every sentence adds value: the first defines the tool, the second specifies use cases, the third details side effects and safety, and the fourth describes output and exit behavior. There is no wasted text, and information is presented in a logical flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (validation with side effects and conditional behavior), no annotations, and no output schema, the description provides comprehensive context. It covers purpose, usage, behavioral transparency (including safety and output), and parameter implications. The absence of an output schema is compensated by detailing the return format and exit behavior, making it complete enough for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds meaningful context beyond the schema: it explains the purpose of the 'environment' parameter ('Controls which .env.{environment} file is loaded and which conditional schema rules apply') and implies usage of 'path' and 'format' through examples like 'project root' and output formats. However, it doesn't provide additional syntax or constraints for parameters beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('validate .env files against envalid schema') and resource ('.env files'), with explicit differentiation from siblings by detailing what it catches: missing required variables, type mismatches, and values outside allowed ranges. This goes beyond a generic 'validate' statement to specify the exact validation scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'before booting the app locally, during CI, after a teammate adds a new required env var, or when switching between development and production configs.' It also includes a specific instruction to 'Pass `environment` to validate a specific .env.{env} file,' offering clear context for parameter usage without needing to reference alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stale_scanA
Detect documentation drift — find places in README.md, CHANGELOG.md, and other project markdown where the docs reference commands, flags, APIs, or files that the code no longer matches.
When to use: before tagging a release, after large refactors or renames, when onboarding a new contributor, or as a periodic health check. Set git: true to additionally flag docs that have not been touched since a closely related source file changed significantly.
Side effects: reads all markdown files and source files reachable from the project root (respecting .gitignore). Never writes, auto-fixes, or moves files — this is a pure reporting tool.
Returns: plain-text, JSON, or markdown report listing each drifted section with file:line references and a one-line explanation of the mismatch (e.g. "README references --deep flag removed in src/cli.ts:42"). Exit 1 if any drift is found.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Absolute or relative path to the project root to scan. Defaults to the current working directory. | |
| format | No | Response format: "terminal" for human-readable ANSI-colored output, "json" for machine-parseable structured data, "markdown" for rendered tables (where supported). Defaults to "terminal". | |
| git | No | When true, additionally compare each markdown file's last-modified commit against the closest-related source file and flag docs that are significantly older. Requires the project to be a git repository; silently skipped otherwise. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so effectively. It explicitly states side effects: 'reads all markdown files and source files reachable from the project root (respecting .gitignore). Never writes, auto-fixes, or moves files.' It also describes the exit behavior: 'Exit 1 if any drift is found.' The only minor gap is that it doesn't mention performance characteristics or rate limits, but for a local file scanning tool, this is reasonable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. Each sentence adds distinct value: purpose statement, usage guidelines, behavioral transparency, and return format/exit behavior. There's no wasted text, and the information is organized logically from general to specific.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description provides excellent contextual completeness. It covers purpose, usage guidelines, behavioral characteristics (including what it does and doesn't do), and output format details. The description compensates well for the lack of structured metadata by being comprehensive yet concise.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds some context about the 'git' parameter ('Set `git: true` to additionally flag docs...'), but doesn't provide additional semantic meaning beyond what's in the schema descriptions. This meets the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('detect', 'find') and resources ('documentation drift', 'README.md, CHANGELOG.md, and other project markdown'). It distinguishes itself from potential siblings by explicitly stating it's a 'pure reporting tool' that 'never writes, auto-fixes, or moves files', which differentiates it from tools that might perform automated fixes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool: 'before tagging a release, after large refactors or renames, when onboarding a new contributor, or as a periodic health check.' It also includes a specific conditional usage tip: 'Set `git: true` to additionally flag docs that have not been touched since a closely related source file changed significantly.' This gives clear context for both primary and advanced use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
velocity_end_taskA
Stop a task timer started with velocity_start_task, record the outcome, and return the actual duration alongside a comparison to the historical median for similar tasks.
When to use: immediately after finishing — or abandoning — any task started with velocity_start_task. Always call, even on failed or abandoned outcomes; skipping leaves orphaned active rows that pollute future predictions and stats.
Side effects: updates the task row in ~/.velocity-mcp/tasks.db with end timestamp, duration, status, optional file/line counts, and any telemetry passed in. Shells out to git diff --stat HEAD~1 and git log --since (5s timeout each) to capture diff stats; safely no-ops outside a git repo. On completed status: computes a semantic embedding for similarity matching, records a calibration residual, and — if the task belonged to a plan — seals the plan when its last active task ends.
Returns: JSON with task_id, duration_seconds (numeric), duration_human (formatted), category, tags, and a message that compares this run's duration to the historical median for the category+tags combination ("you were 23% faster", "right on pace", etc.). Includes a git_diff block with lines added/removed, files changed, and commits made during the task when a git repo is detected.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Identifier of the active task to end. Must match a `task_id` returned by an earlier `velocity_start_task` call that has not already been ended. | |
| status | Yes | Outcome of the task: "completed" (succeeded as planned), "failed" (attempted but did not produce the intended result), or "abandoned" (intentionally stopped — e.g. requirements changed mid-task). Affects whether calibration residuals and embeddings are recorded. | |
| actual_files | No | Number of files actually modified during the task. Compared against `estimated_files` from start-task to feed accuracy metrics. | |
| notes | No | Free-form context about what happened, surprises, or follow-ups. Stored as plain text for later review; does not affect predictions. | |
| tools_used | No | Names of the tools invoked during the task (e.g. ["Edit", "Bash", "Grep"]). Used for telemetry; ordering does not matter, duplicates are deduplicated. | |
| tool_call_count | No | Total number of individual tool invocations during the task — useful for diagnosing tasks that took many small steps versus few large ones. | |
| turn_count | No | Number of assistant turns (request/response cycles) the task spanned. Helps correlate task duration with conversational verbosity. | |
| retry_count | No | Number of times an operation had to be retried (e.g. a failing test re-run after a fix). Higher counts often correlate with under-estimated tasks. | |
| tests_passed_first_try | No | When tests were run as part of the task, whether they passed on the very first execution. Useful signal for code-quality dashboards. | |
| model_id | No | Identifier of the model that handled this task, if not already set at start. Required for model-segmented calibration to take effect. | |
| context_tokens | No | Approximate tokens in the context window at task end. Stored alongside the start-time value to track context growth across the task. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so comprehensively. It details side effects (updates task row, shells out to git commands, computes embeddings, records calibration residuals, seals plans), execution constraints (5s timeout, safely no-ops outside git repo), and conditional behaviors based on status. This provides rich behavioral context beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, usage guidelines, side effects, return values) and front-loads the core functionality. While comprehensive, some sentences could be more concise (e.g., the git command explanations are detailed but necessary). Overall, most content earns its place by providing essential behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with 11 parameters and no annotations or output schema, the description provides exceptional completeness. It covers purpose, usage guidelines, side effects, execution details, conditional behaviors, and return format. The detailed explanation of what happens for different status values and the comprehensive return value description compensate for the lack of structured output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all 11 parameters thoroughly. The description doesn't add significant parameter-specific information beyond what's in the schema descriptions. It mentions some parameters indirectly (like status affecting embeddings), but doesn't provide additional syntax, format, or usage details for individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose with specific verbs ('Stop a task timer', 'record the outcome', 'return the actual duration') and clearly distinguishes it from its sibling 'velocity_start_task'. It identifies the exact resource being operated on (task timer started with velocity_start_task) and the comprehensive actions taken.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('immediately after finishing — or abandoning — any task started with velocity_start_task') and when not to skip it ('Always call, even on failed or abandoned outcomes; skipping leaves orphaned active rows'). It clearly references the alternative/sibling tool (velocity_start_task) and explains the consequences of misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
velocity_start_taskA
Start a timer for a discrete coding task and, when historical data is available, return a duration estimate derived from similar past tasks.
When to use: before starting any distinct unit of work — a bug fix, a feature, a refactor, a test-writing pass. Use one task per logical unit; do not batch unrelated changes under a single task. Always pair with velocity_end_task so the task row is closed and the dataset stays clean.
Side effects: inserts a new row into the local SQLite database at ~/.velocity-mcp/tasks.db (override via HOME). Computes a best-effort duration prediction by querying historical rows of the same category/tags; predictions run locally and are cached per-task. Federated upload is disabled unless the user has explicitly opted in via velocity-mcp federation enable.
Returns: JSON with task_id (pass this to velocity_end_task), started_at ISO timestamp, message, and — when enough historical data exists — a prediction block containing point estimate in seconds, p25/p75 range, confidence (low/medium/high), whether the estimate was calibrated, and whether it drew on federated data.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | No | Stable unique identifier for this task. Pass the same id later to `velocity_end_task`. Omit to have one auto-generated (UUID v4). | |
| category | Yes | High-level category of the work: scaffold, implement, refactor, debug, test, config, docs, or deploy. Used for historical matching — pick the closest fit rather than inventing new categories. | |
| description | Yes | One-sentence description of the task, specific enough that semantic-similarity matching can find comparable historical tasks (e.g. "wire sqlite migrations into the startup path" beats "db work"). | |
| tags | No | Free-form tags that describe the technical surface area (e.g. ["typescript", "react", "sqlite"]). Reuse tags across sessions — consistency improves the quality of historical-similarity matches. | |
| estimated_files | No | Your a-priori guess for how many files you expect to touch. Used both as a similarity signal and to compute an accuracy residual when `velocity_end_task` supplies `actual_files`. | |
| project | No | Project identifier (typically the repo name or directory basename). Auto-detected from the git remote or cwd if omitted. | |
| model_id | No | Identifier of the model running this task (e.g. "claude-opus-4-7"). Used to segment calibration residuals by model so predictions adapt to model-specific pacing. | |
| context_tokens | No | Approximate tokens already in the context window at task start. Stored as telemetry to correlate context pressure with task duration. | |
| parent_task_id | No | If this task is a sub-task spawned from another, pass the parent task's id here so the hierarchy is preserved. | |
| parent_plan_id | No | If this task is part of a larger plan being tracked as a unit, pass the plan run id so plan-level metrics can be sealed when the last task in the plan completes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and excels at disclosing behavioral traits. It describes side effects ('inserts a new row into the local SQLite database'), computational behavior ('Computes a best-effort duration prediction by querying historical rows'), caching behavior ('predictions run locally and are cached per-task'), and privacy/configuration details ('Federated upload is disabled unless the user has explicitly opted in').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It begins with the core purpose, then provides usage guidelines, side effects, and return values in logical sections. Every sentence adds value: the first explains what the tool does, the second provides usage context, the third details side effects and computational behavior, and the fourth specifies return values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 10 parameters, no annotations, and no output schema, the description provides excellent completeness. It explains the tool's purpose, when to use it, behavioral characteristics, side effects, computational approach, privacy considerations, and detailed return structure. The description compensates fully for the lack of structured metadata about outputs and behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds value by explaining the overall purpose of parameters ('return a duration estimate derived from similar past tasks') and providing context about how parameters like category and tags affect historical matching. However, it doesn't provide specific guidance on parameter interactions or advanced usage patterns beyond what's in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Start a timer', 'return a duration estimate') and resources ('discrete coding task', 'historical data'). It distinguishes from sibling 'velocity_end_task' by explaining this starts tasks while the other ends them, and from other siblings by focusing on time tracking with predictions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'before starting any distinct unit of work' with examples (bug fix, feature, refactor), advises 'one task per logical unit', warns against batching unrelated changes, and explicitly states to 'Always pair with `velocity_end_task`'. It also mentions when not to use (when federated upload is disabled unless opted in).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vow_scanA
Scan all dependency licenses in a project and — if a policy file is present — validate each package against that policy, flagging disallowed licenses (e.g. GPL in a proprietary codebase) or packages with unknown licenses.
When to use: before shipping a release, when adding a new dependency, during compliance or legal review, or as a CI gate. Set production: true to skip devDependencies and audit only what actually ships.
Side effects: reads supported lockfiles (package-lock.json or npm-shrinkwrap.json for Node; Cargo.lock for Rust; requirements.txt with hashes, uv.lock, or poetry.lock for Python) plus local node_modules / vendor manifests to resolve license strings. Pnpm, yarn, and go are not yet supported — vow exits with a clear error when only those lockfiles are present. Read-only; no network requests.
Returns: plain-text, JSON, or markdown summary of package → license mapping grouped by license family (MIT/Apache/BSD/GPL/unknown), with per-package links. Exit 1 if any dependency violates the policy or has an unknown license, 0 otherwise.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Absolute or relative path to the project root to scan. Defaults to the current working directory. | |
| format | No | Response format: "terminal" for human-readable ANSI-colored output, "json" for machine-parseable structured data, "markdown" for rendered tables (where supported). Defaults to "terminal". | |
| production | No | When true, exclude devDependencies from the scan and audit only runtime dependencies that ship with the published package. Use this for release-gate checks; leave false for full audits. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so comprehensively. It clearly states side effects ('reads supported lockfiles... plus local node_modules / vendor manifests'), declares it's 'Read-only; no network requests', specifies exit codes ('Exit 1 if any dependency violates the policy or has an unknown license, 0 otherwise'), and documents platform limitations ('Pnpm, yarn, and go are not yet supported — vow exits with a clear error').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and efficiently organized. It begins with the core purpose, follows with usage guidelines, then details behavioral aspects, and concludes with return values. Every sentence serves a distinct purpose without redundancy, making it easy to parse while providing comprehensive information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, no annotations, and no output schema, the description provides exceptional completeness. It covers purpose, usage scenarios, behavioral characteristics (including side effects, limitations, and exit codes), parameter semantics, and return format details. The description fully compensates for the lack of structured metadata, making the tool's functionality and constraints completely understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema description coverage is 100%, the description adds valuable semantic context beyond the schema. It explains the practical implications of the 'production' parameter ('skip devDependencies and audit only what actually ships') and provides usage guidance ('Use this for release-gate checks; leave false for full audits'). However, it doesn't add significant meaning for the 'path' and 'format' parameters beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('scan all dependency licenses', 'validate each package against policy', 'flagging disallowed licenses') and distinguishes it from siblings by focusing on license compliance scanning. It explicitly identifies the resource (dependency licenses in a project) and the action (scanning and policy validation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool: 'before shipping a release, when adding a new dependency, during compliance or legal review, or as a CI gate.' It also offers specific parameter guidance ('Set `production: true` to skip devDependencies') and mentions limitations ('Pnpm, yarn, and go are not yet supported'), giving clear context for appropriate usage scenarios.
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. Dates show when Glama detected each change.
7 tool updates
v0.1.1- Added
aware_sync - Added
berth_check - Added
envalid_validate - Added
stale_scan - Added
velocity_end_task - Added
velocity_start_task - Added
vow_scan
TDQS
Each tool has a clearly distinct purpose with no overlap: aware_sync handles AI context file generation, berth_check scans for port conflicts, envalid_validate validates environment files, stale_scan detects documentation drift, velocity_start_task/velocity_end_task manage task timing, and vow_scan audits dependency licenses. The descriptions clearly differentiate their domains and use cases.
Most tools follow a consistent verb_adjective or verb_noun pattern (e.g., aware_sync, berth_check, envalid_validate, stale_scan, vow_scan), but the velocity tools use a verb_noun_task pattern which slightly deviates. The naming is generally readable and follows a predictable structure across the set.
With 7 tools, the count is well-scoped for a development productivity server. Each tool addresses a specific, valuable aspect of project maintenance (context generation, port checking, env validation, docs drift, task timing, license scanning), and none feel redundant or out of place.
The tool set provides comprehensive coverage for development workflow automation: it includes tools for setup (aware_sync), pre-execution checks (berth_check, envalid_validate), quality assurance (stale_scan, vow_scan), and productivity tracking (velocity tools). There are no obvious gaps; agents can handle common development tasks end-to-end.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
One shared context your team's AI tools read & write over MCP. No re-explaining. Free.
327 dev tools via REST API and MCP. Generate Dockerfiles, schemas, K8s, APIs, and more.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables spec-driven development workflows with AI assistants, providing tools for managing specification lifecycles, task dependencies, code navigation, testing, and automated reviews through a unified CLI and MCP interface.4MIT
- AlicenseNot gradedqualityDmaintenanceA production-ready MCP server that provides AI assistants with comprehensive GitHub developer tooling including PR analysis, code review, changelog generation, dependency auditing, commit summarization, and refactoring suggestions.16ISC
- AlicenseAqualityDmaintenanceZero-config MCP server that gives AI coding assistants a real-time diagnostic snapshot of your local dev environment. Detects framework, running services, recent errors, git state, and provides a health diagnosis in one call.3401MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that equips AI agents with dev workflow tools including GitHub project management, conventional commits, visual regression testing, Jira/Confluence integration, and a persistent memory knowledge graph.21MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WhenLabs-org/when'
If you have feedback or need assistance with the MCP directory API, please join our Discord server