omp-worker-mcp
omp-worker-mcp
Надёжный сервер Model Context Protocol (MCP) для делегирования асинхронных задач программирования и DAG-рабочих процессов локальным субагентам CLI Oh My Pi (OMP).
Быстрый старт • Конфигурация • Доступные инструменты • Контракт безопасности • Атрибуция вышестоящего проекта
Ключевые особенности
⚡ Асинхронное делегированное выполнение: Выгружайте тяжёлые задачи программирования, рефакторинга и исследования в фоновые рабочие экземпляры OMP, не блокируя основной диалог.
🔀 Топологическая оркестрация DAG: Выполняйте взаимозависимые пакетные задачи с автоматической топологической сортировкой, контролем параллелизма и распространением зависимостей.
🛡️ Изоляция путей рабочей области: Обеспечивайте явные границы путей записи и предотвращайте перекрывающиеся изменения файлов в параллельных задачах.
🔍 Контролируемое возобновление и конверты: Просматривайте промежуточные журналы в реальном времени, извлекайте структурированные JSON-конверты результатов и предоставляйте контролирующие указания для повторных попыток или корректировки задач.
Related MCP server: Leetcoder
Атрибуция вышестоящего проекта и отказ от ответственности
Внешний вышестоящий CLI: Этот проект взаимодействует с Oh My Pi (OMP), инструментом с открытым исходным кодом, выпущенным под лицензией MIT.
Требования к пользователю:
Node.js >= 22.0.0.
Пользователи должны установить и настроить собственный локальный экземпляр OMP CLI.
Пользователи несут ответственность за соблюдение лицензии и условий OMP CLI, применимых к их среде.
Возможности
Асинхронное делегированное выполнение: Запускайте независимые задачи программирования субагентов, не блокируя основной диалоговый сеанс.
Оркестрация DAG и пакетов: Выполняйте взаимозависимые пакетные задачи с топологической сортировкой зависимостей, ограничениями параллелизма и автоматическим распространением зависимостей.
Строгая безопасность и владение задачами: Встроенные проверки предотвращают запись нескольких параллельных задач в перекрывающиеся пути файлов или конфликты в одной рабочей области.
Непрерывное наблюдение и обратная связь: Просматривайте промежуточные результаты, потоковые журналы, извлекайте структурированные JSON-конверты и предоставляйте контролирующую обратную связь для продолжения или повторных попыток.
Кроссплатформенный дизайн: Предназначен для локальных сред Node.js на Windows, macOS и Linux; проверьте доступность OMP CLI на вашей платформе.
Установка и быстрый старт
# 1. Clone the repository
git clone https://github.com/divenire990/omp-worker-mcp.git
cd omp-worker-mcp
# 2. Install dependencies
npm ci
# 3. Build TypeScript to dist/
npm run build
# 4. Run test suite
npm testКонфигурация
Конфигурация управляется через переменные среды (или настраивается непосредственно в вашем MCP-клиенте).
Переменная | Описание | По умолчанию |
| Путь или имя исполняемого файла OMP CLI. |
|
| JSON-массив аргументов, добавляемых перед вызовами OMP CLI. |
|
| Каталог для хранения состояний заданий, попыток, журналов и артефактов. |
|
| Необязательные пользовательские инструкции по автоматизации браузера, внедряемые в подсказки задач. | (нет) |
Примеры для кроссплатформенных сред
Windows (cmd / PowerShell)
set OMP_WORKER_OMP_COMMAND=omp
set OMP_WORKER_STATE_DIR=C:\Users\YourUser\.codex\state\omp-workermacOS / Linux (bash / zsh)
export OMP_WORKER_OMP_COMMAND=/usr/local/bin/omp
export OMP_WORKER_STATE_DIR=/home/youruser/.codex/state/omp-workerПример конфигурации MCP-клиента Codex
Добавьте сервер в конфигурацию MCP Codex (например, в config.toml):
Пример для Windows
[mcp_servers.omp-worker]
command = "node"
args = ["C:/path/to/omp-worker-mcp/dist/index.js"]
[mcp_servers.omp-worker.env]
OMP_WORKER_OMP_COMMAND = "omp"
OMP_WORKER_STATE_DIR = "C:/Users/YourUser/.codex/state/omp-worker"Пример для macOS / Linux
[mcp_servers.omp-worker]
command = "node"
args = ["/path/to/omp-worker-mcp/dist/index.js"]
[mcp_servers.omp-worker.env]
OMP_WORKER_OMP_COMMAND = "/usr/local/bin/omp"
OMP_WORKER_STATE_DIR = "/home/youruser/.codex/state/omp-worker"Доступные MCP-инструменты
Инструмент | Назначение |
| Удобный инструмент: делегирует одну задачу и ожидает до |
| Запускает асинхронного фонового рабочего для задачи программирования и немедленно возвращает |
| Ожидает завершения выполняющейся фоновой задачи или опрашивает до истечения времени ожидания. |
| Получает полную историю попыток, журналы, выходные данные и проанализированные структурированные конверты для задания. |
| Передаёт контролирующие исправления/указания в неудачное или заблокированное задание для новой попытки. |
| Корректно завершает выполняющееся задание и его дерево дочерних процессов. |
| Запускает граф зависимостей (DAG) параллельных/последовательных пакетных задач и ожидает завершения. |
| Ожидает выполнения или завершения асинхронной группы пакетных задач. |
| Отменяет все выполняющиеся и поставленные в очередь задачи в пакетной группе. |
Контракт безопасности и владения задачами
Изоляция записи и режима только для чтения:
Задачи
writeдолжны указывать конкретные пути файлов, которыми они владеют.Задачи
read_onlyстрого ограничены в изменении рабочей области.
Проверка перекрытий DAG:
Параллельные задачи не могут объявлять перекрывающиеся границы записи.
Задачи, изменяющие общие пути, должны объявлять явные линейные зависимости DAG (
depends_on).
Структурированный контракт проверки:
Каждая завершённая подзадача должна возвращать структурированные детали проверки и обновлённые описания артефактов.
Лицензия
Этот проект распространяется по лицензии MIT.
Available Tools
9 toolsomp_cancelStop OMP TaskADestructiveIdempotent
Request immediate cancellation of one exact delegated OMP job. The detached runner owns the OMP child PID and terminates that process tree safely. Call this immediately when the user asks to stop; do not inspect PIDs or manually kill processes first.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| reason | No | Cancelled at the user's request |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| job_id | Yes | |
| status | Yes | |
| attempt | Yes | |
| summary | No | |
| artifacts | Yes | |
| remaining | Yes | |
| session_id | No | |
| details_path | No | |
| max_attempts | Yes | |
| verification | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds valuable behavioral context: the cancellation is immediate, the 'detached runner owns the OMP child PID' and terminates the process tree safely. No contradiction with annotations. It could mention whether a cancelled job can be restarted, but otherwise rich.
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?
Three crisp sentences with no wasted words. The key action verb is first, followed by the mechanism, then the usage imperative. Every sentence earns its place, and the critical usage guidance is front-loaded.
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?
The tool has 2 parameters, an output schema, and sibling tools. The description clearly handles the core purpose and usage constraints. It lacks a note on the output schema (e.g., whether it returns success/failure), but with an output schema present, the description need not explain return values. It could mention what happens if the job_id doesn't exist or is already cancelled, but overall sufficiently complete.
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 0%, so the description must compensate. It does not provide detailed parameter semantics but it adds that the operation is per 'one exact' job (implying the job_id parameter uniquely identifies it). The reason parameter is not described, but given the tool's focused purpose and the default value in the schema, the agent can infer it. A brief mention of reason's purpose would push to 5.
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 uses a specific verb ('cancel') and resource ('delegated OMP job'), clearly distinguishing the tool from siblings like omp_cancel_group. It states exactly what the tool does (request immediate cancellation of one exact job) and how it works (the runner terminates the process tree safely).
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 when-to-use guidance ('Call this immediately when the user asks to stop') and what not to do ('do not inspect PIDs or manually kill processes first'). This effectively differentiates from alternative approaches and sets clear guardrails for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omp_cancel_groupCancel Batch Task GroupADestructiveIdempotent
Request immediate cancellation of a running batch task group and its child tasks. Writes a cancellation request that the detached group coordinator handles safely. Call this immediately when the user asks to stop a batch.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Reason for cancellation | Cancelled at the user's request |
| group_id | Yes | The group_id of the batch task group to cancel |
Output Schema
| Name | Required | Description |
|---|---|---|
| tasks | No | |
| status | Yes | |
| summary | Yes | |
| group_id | Yes | |
| total_tasks | Yes | |
| failed_tasks | Yes | |
| max_parallel | Yes | |
| blocked_tasks | Yes | |
| cancelled_tasks | Yes | |
| completed_tasks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds valuable context: 'Writes a cancellation request that the detached group coordinator handles safely' – this explains that cancellation is asynchronous and not immediate, which is critical behavioral detail not in annotations. No contradictions with annotations.
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?
Three sentences, all essential: action, mechanism, usage context. No wasted words. Could be slightly more concise by merging first two sentences, but overall excellent structure and front-loading.
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 (2 parameters, output schema present), the description covers the core behavior and usage context well. It does not explain the output schema content or return values, but since an output schema exists, the description does not need to. The lack of details on edge cases (e.g., if group already done) is a minor gap.
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% (both parameters have descriptions). The description does not elaborate on parameter details beyond what the schema already provides. With full coverage, baseline 3 is appropriate as the description adds no extra parameter meaning.
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 'immediate cancellation of a running batch task group and its child tasks'. It uses specific verbs ('cancel', 'stop') and resources ('batch task group', 'child tasks'), and distinguishes from siblings by referring to a 'group' context, which the sibling list includes 'omp_cancel' (likely single-task cancellation).
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: 'Call this immediately when the user asks to stop a batch.' This sets clear when-to-use context. However, it does not mention when NOT to use it (e.g., if the group is already finished) or alternatives among siblings like 'omp_cancel' for single tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omp_continueSend Supervisory Feedback to Same OMP SessionADestructive
Resume the same OMP session with targeted supervisory feedback to correct specific acceptance defects without starting a fresh task from scratch. Bounded to remaining attempts within max_attempts.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| feedback | Yes | Specific defect, evidence, intended correction, and success check | |
| timeout_minutes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| job_id | Yes | |
| status | Yes | |
| attempt | Yes | |
| summary | No | |
| artifacts | Yes | |
| remaining | Yes | |
| session_id | No | |
| details_path | No | |
| max_attempts | Yes | |
| verification | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and openWorldHint=true, so the agent knows this tool mutates state. The description adds that it is 'bounded to remaining attempts within max_attempts', which is useful context about limits. However, it does not explain what gets destroyed (e.g., previous feedback? session progress?), nor does it clarify side effects or authorization needs. This adds some value but is not comprehensive.
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 consists of two concise sentences. The first sentence front-loads the primary verb and resource, and the second adds a critical constraint. No redundant or irrelevant information is present. Every word earns its place.
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 that annotations and an output schema exist, the description covers the essential purpose and a key constraint. However, it does not mention prerequisites (e.g., the session must exist and be in a state that allows continuation) or what happens if remaining attempts are exceeded. For a tool that modifies state (destructiveHint=true), a note on reversibility or confirmation would improve completeness, but the description is nearly adequate.
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 only 33% (only the `feedback` parameter has a description in schema). The tool description clarifies that `job_id` identifies the session to resume, which adds meaning beyond the schema (which only has minLength). However, `timeout_minutes` is not mentioned in either the schema or the description, leaving its purpose implicit. The description partially compensates for low coverage but leaves a gap for one parameter.
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 resumes an OMP session with targeted feedback to correct defects, avoiding starting fresh. The verb 'Resume' and resource 'same OMP session' are specific, and the phrase 'bounded to remaining attempts within max_attempts' adds scope. This differentiates from siblings like omp_run_compact (which starts new tasks) and omp_cancel (which ends sessions).
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 explains the use case (correcting acceptance defects without starting fresh) and mentions a bounded constraint (remaining attempts). However, it does not explicitly state when NOT to use this tool or name alternatives (e.g., 'Use omp_run_compact for new tasks' or 'If the session has no remaining attempts, use omp_delegate instead'). The usage is implied but lacks direct exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omp_delegateDelegate Complete Task to OMP (Low-level)ADestructive
Low-level background delegation entrypoint. Transfers ownership of an execution task to OMP and returns immediately with job_id. Prefer omp_run_compact for standard workflows to avoid separate delegate/wait round trips.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Absolute working directory OMP may inspect and modify | |
| goal | Yes | Complete natural-language outcome OMP must deliver | |
| acceptance | No | ||
| max_attempts | No | ||
| timeout_minutes | No | ||
| supervisor_brief | No | Decision-ready read-only findings, hypotheses, constraints, and recommended direction |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| job_id | Yes | |
| status | Yes | |
| attempt | Yes | |
| summary | No | |
| artifacts | Yes | |
| remaining | Yes | |
| session_id | No | |
| details_path | No | |
| max_attempts | Yes | |
| verification | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this tool as destructive (destructiveHint: true) and not read-only (readOnlyHint: false), and the description reinforces that by saying ownership is transferred. The description adds value by disclosing that it is a low-level delegation entrypoint and that it returns immediately, which helps the agent understand the async behavior. However, it does not elaborate on what destruction entails or if there are side effects beyond ownership transfer.
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 two sentences long, with the key verb and immediate behavior in the first sentence, and the alternative suggestion in the second. Every sentence earns its place with no wasted words.
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 relative complexity (6 parameters, async delegation, destructive, with an output schema for return value), the description covers the high-level intent but omits details about parameter semantics and what exactly is returned beyond 'job_id'. The output schema exists but is not referenced, and return behavior is only partially described.
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 50%, so the description should compensate but does not explicitly describe each parameter. The description only mentions 'goal' and 'cwd' contextually, while schema provides descriptions for most parameters. The description does not add meaning beyond the schema for parameters like 'acceptance', 'max_attempts', 'timeout_minutes', or 'supervisor_brief'. Baseline is acceptable but not exemplary.
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 action ('delegate' an execution task to OMP), the resource ('execution task'), and the return value ('returns immediately with job_id'). It also clearly distinguishes itself from the sibling tool 'omp_run_compact' by calling it a low-level entrypoint.
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 direct guidance on when to use this tool and when to prefer an alternative. It says 'Prefer omp_run_compact for standard workflows to avoid separate delegate/wait round trips', explicitly naming the sibling and the trade-off. This is the highest level of usage guidance an agent could want.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omp_resultInspect Complete OMP Task ResultARead-onlyIdempotent
Retrieve full details of a terminal OMP job, including finalResponse and attempt logs. Call this only when minimal acceptance check fails, high-risk operations occurred, or the user explicitly asks for full inspection; do not call this after every successful compact run.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| cwd | Yes | |
| goal | Yes | |
| error | No | |
| job_id | Yes | |
| status | Yes | |
| attempt | Yes | |
| summary | No | |
| attempts | Yes | |
| artifacts | Yes | |
| remaining | Yes | |
| session_id | No | |
| details_path | Yes | |
| max_attempts | Yes | |
| verification | Yes | |
| final_response | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description does not need to re-state safety. It adds value by disclosing that the tool is for 'terminal' jobs and retrieves 'attempt logs,' which are behavioral details beyond the annotations. Score of 4 reflects strong transparency with minor room for additional context (e.g., what happens if the job is not terminal).
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 two sentences long, front-loads the purpose, and every sentence earns its place. The first sentence states the function, the second defines when to use it. No waste, no redundancy.
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 has only one parameter and an output schema exists, the description does not need to explain return values. It covers the key context: what the tool retrieves, when to call it, and when not to. A slight gap is not specifying that the job must be terminal, but this is implied by 'terminal OMP job.' Score of 4 reflects strong completeness.
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 0%, meaning the tool description must compensate. The description does not add meaning to the 'job_id' parameter beyond what the schema provides (required string with minLength). However, the parameter is simple and self-explanatory. Baseline 3 is appropriate as the description does not actively add value but the parameter is trivial.
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 retrieves full details of a terminal OMP job, specifically 'finalResponse and attempt logs.' The verb 'retrieve' is specific, and the resource 'terminal OMP job' is well-defined. This distinguishes it from siblings like 'omp_run_compact' or 'omp_cancel' which have different purposes.
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: 'call this only when minimal acceptance check fails, high-risk operations occurred, or the user explicitly asks for full inspection; do not call this after every successful compact run.' This clearly tells the agent when and when not to use this tool, differentiating it from routine monitoring tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omp_run_batch_compactRun Batch OMP Tasks with DAG and Compact Aggregated Result (Preferred for Multi-task)ADestructive
Submits a decomposed group of OMP tasks to execute concurrently in the server-side bounded rolling pool (max_parallel 1-10) using a detached group runner. Enforces dependency DAG and write-ownership safety, waits up to wait_seconds (0-240, default 60s) for batch completion, and returns stable compact aggregated results. If still running when deadline elapses, returns group_id and minimal progress counts for subsequent omp_wait_group.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Absolute working directory OMP may inspect and modify | |
| tasks | Yes | Array of decomposed tasks to execute concurrently according to dependency DAG and ownership safety | |
| max_parallel | No | Maximum concurrent active OMP runners (1-10, default 4) | |
| wait_seconds | No | Maximum seconds to wait for batch completion inside this call (0-240, default 60) | |
| supervisor_brief | No | Shared decision-ready read-only findings, hypotheses, and constraints for the task group | |
| default_max_attempts | No | Default per-task attempt limit if not specified in task (1-5, default 3) | |
| group_timeout_minutes | No | Hard overall group deadline in minutes (1-120, default 60) | |
| default_timeout_minutes | No | Default per-task timeout in minutes if not specified in task (1-120, default 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| tasks | No | |
| status | Yes | |
| summary | Yes | |
| group_id | Yes | |
| total_tasks | Yes | |
| failed_tasks | Yes | |
| max_parallel | Yes | |
| blocked_tasks | Yes | |
| cancelled_tasks | Yes | |
| completed_tasks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond what annotations provide: it reveals the bounded rolling pool (max_parallel 1-10), dependency DAG enforcement, write-ownership safety, wait timeout with completion or partial result handling, and return of group_id for follow-up. Annotations only indicate destructive and open-world hints, so the description significantly enhances transparency.
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 three sentences long, front-loaded with the core action, and contains no redundant information. Every sentence adds value, describing the submission, execution constraints, and timeout behavior. It is optimally concise.
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 (8 parameters, DAG, safety, timeout) and the presence of an output schema, the description covers the main behavior thoroughly. It explains the batch submission, concurrent execution, dependency enforcement, and timeout handling. Minor gaps exist (e.g., error handling for failed tasks), but the output schema likely addresses return values, making the description largely complete.
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?
All 8 parameters have descriptions in the input schema (100% coverage), so the baseline is 3. The description mentions max_parallel and wait_seconds ranges but mainly provides behavioral context rather than new parameter-level meaning. It does not add insight beyond what the schema already provides.
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 submits a decomposed group of OMP tasks with dependency DAG and write-ownership safety, and returns compact aggregated results. The verb 'submits' and resource 'batch of OMP tasks' are specific. However, it does not explicitly differentiate from sibling tools like omp_run_compact, relying on the title's 'Preferred for Multi-task' which is not part of the description.
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 implies usage for multi-task batches by mentioning 'decomposed group' and a 'detached group runner', and suggests follow-up with omp_wait_group if incomplete. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., omp_run_compact for single tasks) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omp_run_compactRun OMP Task with Compact Result (Preferred for Single Task)ADestructive
Preferred entrypoint for single substantive execution tasks. Creates a delegated OMP task, launches the detached runner, and waits up to wait_seconds (default 60s) for completion in a single MCP call. If finished, returns a compact summary, artifacts, verification, and details_path without dumping the full final response. If still running at the deadline, returns job_id and status running for subsequent omp_wait.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Absolute working directory OMP may inspect and modify | |
| goal | Yes | Complete natural-language outcome OMP must deliver | |
| acceptance | No | ||
| max_attempts | No | ||
| wait_seconds | No | Maximum seconds to wait for terminal status inside this call (0-60, default 60) | |
| timeout_minutes | No | ||
| supervisor_brief | No | Decision-ready read-only findings, hypotheses, constraints, and recommended direction |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| job_id | Yes | |
| status | Yes | |
| attempt | Yes | |
| summary | No | |
| artifacts | Yes | |
| remaining | Yes | |
| session_id | No | |
| details_path | No | |
| max_attempts | Yes | |
| verification | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the creation, waiting, and return behavior (compact summary vs. job_id/status running) beyond what annotations provide. Annotations indicate destructiveHint=true (mutation), and the description corroborates and elaborates on the lifecycle. No contradiction with annotations.
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 four sentences, front-loads purpose, and every sentence adds value: preferred entrypoint, process, success return, timeout case. No extraneous words.
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?
The description covers the core behavior and return values, which is sufficient given the output schema. However, it omits important behavioral details like retry logic (max_attempts), overall timeout (timeout_minutes), and the role of acceptance/supervisor_brief. For a tool with 7 parameters, a more complete description would address these.
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?
With 57% schema coverage, the schema already describes four parameters. The description only mentions wait_seconds default (60s) and does not explain goal, cwd, acceptance, max_attempts, timeout_minutes, or supervisor_brief. It misses the opportunity to add meaning beyond the schema, particularly for the less-documented 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 clearly states the tool is the 'preferred entrypoint for single substantive execution tasks,' specifies the action (creates a delegated OMP task, launches runner, waits), and differentiates itself from siblings like omp_run_batch_compact by focusing on single tasks.
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 positions this tool as the preferred choice for single tasks and references subsequent polling with omp_wait for running jobs. It does not explicitly list when not to use it or contrast with sibling tools like omp_delegate or omp_run_batch_compact, but the context is clear enough for an agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omp_waitWait for OMP TaskARead-onlyIdempotent
Wait for an existing OMP job to reach a terminal status, polling up to wait_seconds (default 30s, max 60s). Returns the current status and summary once terminal or when the wait deadline elapses. Avoid polling in a tight loop.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| job_id | Yes | |
| status | Yes | |
| attempt | Yes | |
| summary | No | |
| artifacts | Yes | |
| remaining | Yes | |
| session_id | No | |
| details_path | No | |
| max_attempts | Yes | |
| verification | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. Description adds value: polling behavior, timeout defaults and max, and that it returns status only at terminality or deadline. No contradiction with annotations.
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?
Very concise: two sentences that cover purpose, behavior, parameters, and usage guidance. No wasted words.
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 is a polling wait with only two parameters, the description is largely complete. The output schema exists, so return value is covered. Minor gap: doesn't specify that the job must already exist (vs. being started elsewhere).
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 0%, but description explains both parameters: job_id (required, implicit), wait_seconds (with default 30s, max 60s). It adds meaning beyond schema types and constraints, but the parameter names are self-explanatory.
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?
Describes a specific action: waiting for an OMP job to reach terminal status. It clearly distinguishes itself from siblings by mentioning polling with configurable timeout and return of status/summary.
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?
Explicitly states the use case: waiting for an existing job to completion. The description includes a behavioral guideline ('Avoid polling in a tight loop'), but does not explicitly contrast with siblings like omp_wait_group or omp_cancel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omp_wait_groupWait for Batch Task GroupARead-onlyIdempotent
Wait for an existing OMP task group to reach a terminal status, polling up to wait_seconds (0-240, default 60s). If completed, returns full aggregated compact results in original input order. If still running when deadline elapses, returns minimal progress counts without leaking task summaries.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | The unique group_id returned by omp_run_batch_compact | |
| wait_seconds | No | Maximum seconds to wait inside this call (0-240, default 60) |
Output Schema
| Name | Required | Description |
|---|---|---|
| tasks | No | |
| status | Yes | |
| summary | Yes | |
| group_id | Yes | |
| total_tasks | Yes | |
| failed_tasks | Yes | |
| max_parallel | Yes | |
| blocked_tasks | Yes | |
| cancelled_tasks | Yes | |
| completed_tasks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only (readOnlyHint: true), idempotent, and non-destructive. The description adds critical behavioral details beyond annotations: it explains two possible outcomes (full results on completion, minimal progress counts on timeout), clarifies the poll-up-to pattern, and confirms no task summaries leak on timeout. This goes beyond what annotations provide.
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?
Two concise sentences, both front-loaded with the core action and outcome. No wasted words; every sentence adds value about behavior or return conditions.
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 output schema exists (not shown but noted in signals), the description does not need to document return fields. It covers the key behavioral scenarios (success and timeout), parameter constraints, and source of group_id. Slight deduction for not mentioning whether the call can be re-invoked after timeout to continue waiting, but annotations imply idempotency.
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 coverage is 100%, but the description adds meaning beyond the schema: it explains that wait_seconds controls polling duration with a clear range and default, and that group_id must come from omp_run_batch_compact. The description does not describe format or validation beyond schema, but it effectively contextualizes both 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 uses a specific verb ('Wait for'), identifies the resource ('OMP task group'), and clearly defines the scope (terminal status, polling behavior). Distinguished from siblings like omp_wait by specifying 'Batch Task Group' and referencing omp_run_batch_compact.
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 implies when to use this tool (after omp_run_batch_compact) by requiring group_id, but does not explicitly state when not to use it or name alternative tools for other cases. The context of sibling tools provides partial guidance.
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.
9 tool updates
v0.1.0- First observed
omp_cancel - First observed
omp_cancel_group - First observed
omp_continue - First observed
omp_delegate - First observed
omp_result - First observed
omp_run_batch_compact - First observed
omp_run_compact - First observed
omp_wait - First observed
omp_wait_group
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: batch vs single, delegate vs wait vs cancel vs result retrieval vs continue. No two tools overlap in function—omp_run_compact and omp_delegate differ by synchronous vs asynchronous, and omp_wait_group vs omp_wait serve batch vs single jobs.
All tools follow a consistent `omp_<verb>[_<noun>]` pattern where the verb describes the action (run, wait, cancel, result, continue) and optional noun specifies the target (batch, group, compact). Perfectly predictable and uniform.
9 tools precisely cover the lifecycle of both single and batch task execution: submission, waiting, cancellation, result retrieval, and continuation. No tool is superfluous, and the count is tight for the complexity of the domain.
The tool surface covers every stage of task management: submission (run/delegate), monitoring (wait), cancellation (cancel), post-hoc inspection (result), and iterative correction (continue). No obvious gaps—both single and batch workflows are fully supported.
Maintenance
Related MCP Connectors
Agent-native collaboration network: orchestrate a team of long-running agents from any MCP client.
AI work orchestration for plans, tasks, teams, and coding-agent dispatch.
Hosted runtime for persistent agent teams, durable workflows, memory, schedules, and goals.
Durable background job execution, async task scheduling, and state persistence for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables Claude Code to delegate work to persistent oh-my-pi (omp) subagents via an MCP server with 7 tools (spawn, send, output, status, list, stop, prune), wrapping omp RPC mode with enforcement hooks for descriptive agent naming, model configuration, denylists, write-scope ownership, and cooperative locking.-
- AlicenseNot gradedqualityBmaintenanceEnables Hermes agents to delegate bounded coding tasks to persistent oh-my-pi sessions with isolated git worktrees, live steering, and durable follow-ups, requiring explicit user confirmation before each task.AGPL 3.0
- AlicenseAqualityBmaintenanceEnables delegating coding tasks to a pi agent as a steerable background worker, allowing mid-run redirection, follow-ups, and keeping the delegate's context isolated from your main conversation.1216 npm15MIT
- AlicenseAqualityAmaintenanceEnables orchestrating external AI-agent CLIs like Codex to execute project development tasks through an async task system with objective verification and automated failure rework loops.112,588 npm8Apache 2.0