Skip to main content
Glama
Vetrox

ventrox

Official
by Vetrox

Ventrox

Кодинг-агент много раз в день упирается в одну и ту же стену, и никто этого не видит. Ventrox добавляет агенту один вызов инструмента: что он пробовал, что не сработало, сколько минут потеряно. Агент не может читать венты обратно; сервер помечает каждый из них сессией, проектом, веткой и временем. Ревьюер запускает VENTROX_SECRET=$(ventrox grant) claude и получает список вентов, сгруппированных по приблизительному сходству, отсортированных по количеству и минутам. Стена, стоившая больше всего минут, идёт первой. Несколько сотен строк Python, один файл SQLite в вашем домашнем каталоге, две команды для установки. Ничего не уходит по сети, и ничего не попадает в ваш репозиторий. Кластеризация — это TF-IDF на n-граммах, и она не видит синонимов; редактирование — это список регулярных выражений, best effort. Лимиты: 20 вентов на сессию, 5 за 10 минут. Идея взята из vent tool и vent-widget от Lovable.

Установка

Установите Ventrox как глобальный инструмент:

uv tool install git+https://github.com/Vetrox/ventrox.git

Или склонируйте и установите из клонированного репозитория:

git clone https://github.com/Vetrox/ventrox && cd ventrox && uv tool install .

Затем запустите настройку:

ventrox setup

Настройка копирует навыки ventrox-report и ventrox-review в ~/.claude/skills/. Затем она регистрирует MCP-сервер командой claude mcp add --scope user ventrox -- ventrox.

Related MCP server: Fix Memory MCP

Использование

Репортёр: агент вызывает ventrox_vent с аргументами tried, failed и minutes_lost. Он пишет один вент за ход, и только после того, как одно и то же трение повторяется (два сбоя или более 10 минут). Он исправляет вент в той же сессии с помощью ventrox_edit. Сервер принимает 20 вентов на сессию и 5 вентов за 10 минут.

Ревьюер: запустите сессию с одноразовым токеном:

VENTROX_SECRET=$(ventrox grant) claude

Токен одноразовый и действует 10 минут. Затем в сессии доступны инструменты ревьюера. Вызывайте их в таком порядке:

  1. ventrox_recluster группирует открытые венты по пересечению словаря.

  2. ventrox_clusters выводит группы, отсортированные по количеству открытых, затем по потерянным минутам.

  3. ventrox_resolve_cluster помечает группу как resolved или wontfix.

Удаление

ventrox setup --remove
uv tool uninstall ventrox
rm -r ~/.local/share/ventrox   # deletes all vents

Инструменты

Tool

Mode

Arguments

Returns

ventrox_vent

репортёр

tried, failed, minutes_lost

id или error

ventrox_edit

репортёр

id и любые из tried, failed, minutes_lost

ok

ventrox_get

ревьюер

id

вент или error

ventrox_search

ревьюер

query, status (необязательно), limit (по умолчанию 20, максимум 100)

results, сначала новые

ventrox_clusters

ревьюер

нет

clusters, отсортированные по количеству открытых, затем по потерянным минутам

ventrox_recluster

ревьюер

нет

количество clusters, количество vents

ventrox_resolve

ревьюер

id, status (resolved или wontfix)

ok

ventrox_resolve_cluster

ревьюер

cluster_id, status (resolved или wontfix)

ok, количество changed

Текстовые поля содержат от 1 до 4000 символов. minutes_lost принимает значения от 0 до 1440.

Переменные окружения

Variable

Purpose

Default

VENTROX_HOME

Каталог данных

не задано

VENTROX_SESSION

Идентификатор сессии

генерируется для каждого процесса

VENTROX_SECRET

Токен предоставления доступа для сессии ревьюера; одноразовый, действует 10 минут

не задано

VENTROX_EXAMPLES

Путь к файлу с примерами проектов

не задано

VENTROX_MAX_PER_SESSION

Венты, которые сервер принимает за сессию

20

VENTROX_MAX_PER_10MIN

Венты, которые сервер принимает за 10 минут

5

Расположение данных

Сервер выбирает первый из $VENTROX_HOME, $XDG_DATA_HOME/ventrox и ~/.local/share/ventrox. Все венты хранятся в vents.db в этом каталоге. Файл — это обычный SQLite без шифрования; его защищают только права доступа к файлу. Сервер отказывается запускаться, если каталог данных находится внутри git-worktree, и завершается с кодом 2.

Навыки

ventrox-report объясняет агенту, когда трение считается вентом и что должны содержать три поля. ventrox-review говорит ревьюеру запустить recluster, затем clusters, затем resolve. ventrox setup устанавливает оба.

Примеры проектов

Поместите файл .ventrox.md в корень проекта, чтобы добавить примеры хороших вентов для конкретного проекта. Задайте VENTROX_EXAMPLES как путь к файлу, чтобы добавить примеры для всех проектов. Сервер добавляет оба к описанию инструмента ventrox_vent.

Разработка

uv sync
uv run pytest
uv run ventrox

Не-цели

Ventrox не синхронизируется с трекером задач. У него нет многопользовательского режима. Он не записывает трассировки вызовов инструментов, только три поля, которые пишет агент. Он не открывает сетевых соединений.

Available Tools

2 tools
ventrox_editA

Edit the tried, failed, or minutes_lost of a vent you wrote.

Provide the vent ID. Validation rules match ventrox_vent. Returns ok (true or false). If the edit fails, we do not state the reason. Possible causes: wrong ID, wrong session, or validation error.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
triedNo
failedNo
minutes_lostNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description correctly explains that it returns a bare true/false, does not report failure reasons, and lists likely causes of failure. It also indicates scope ('a vent you wrote'), which implies an ownership or session restriction, though it does not detail authentication behavior.

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

Conciseness5/5

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

The description is focused, front-loaded with the action, and every clause earns its place. It includes the necessary fields, the required input, return shape, and failure behavior without padding or repetition.

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

Completeness4/5

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

For a tool with no output schema and no annotations, the description gives sufficient info to call it and interpret false results. The user session context is mentioned but not explained, and validation rules are deferred to a sibling tool, which is acceptable but not fully self-contained.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must clarify parameter meaning. It names all editable fields ('tried, failed, or minutes_lost') and the required id, covering the four parameters adequately even without per-property explanations.

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

Purpose5/5

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

The description's leading sentence clearly states the action ('Edit') and the resource ('a vent you wrote') and specifies the editable fields. It distinguishes itself from the sibling ventrox_vent by framing this as an edit operation for existing vents, not a creation operation.

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

Usage Guidelines4/5

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

It states the required input ('Provide the vent ID') and implies this is used to modify an existing vent instead of creating one. It does not explicitly name ventrox_vent as the alternative, but the context signals make the intended usage clear.

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

ventrox_ventA

Record friction you hit today.

A vent describes what blocked you. Write what you tried, what failed, and how many minutes you lost. Do not write fixes, workarounds, or lessons. We do not read vents back to you.

Write one vent per turn. Write a vent only after you hit the same friction again. Friction repeats when the same thing fails two times or more, or when one thing costs more than 10 minutes.

Good vents:

  • tried "run the test suite with uv run pytest", failed "import error on conftest.py three times in a row; the fix needed PYTHONPATH that no doc states", minutes_lost 25

  • tried "deploy to staging with the standard CloudFormation template", failed "VPC id mismatch in the template; had to edit manually each time for 3 deploys", minutes_lost 18

  • tried "install the linter with pip install ruff", failed "no wheel for Python 3.13 on macOS arm64; built from source twice, flaky on CI", minutes_lost 12

  • tried "run database migration with python manage.py migrate", failed "timeout on the first attempt; docs don't mention --timeout flag; second attempt with flag succeeded", minutes_lost 8

Not vents:

  • A one-off typo you fixed once. That is not repeated friction.

  • "How do I make the tests faster?" That is a question, not friction.

  • "Next time use pytest-xdist for parallel tests". That is a lesson or a fix, not what blocked you.

  • "Finished the feature, took 3 hours". That is a task-progress note, not friction.

ParametersJSON Schema
NameRequiredDescriptionDefault
triedYes
failedYes
minutes_lostYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden, and it does so thoroughly. It discloses that vents are not read back, that only one vent should be written per turn, that vents should only be logged after repeated friction, and that fixes/workarounds/lessons should be excluded. This goes well beyond a simple 'record friction' statement.

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

Conciseness5/5

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

The description is longer than average, but every section earns its place: a front-loaded purpose statement, eligibility thresholds, and illustrative good/bad examples. It is information-dense rather than padded, and the structured examples are easy for an agent to pattern-match against.

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

Completeness5/5

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

For a logging tool with no output schema and no annotations, the description is complete. It tells the agent what to record, when recording is appropriate, what not to record, and what happens after recording ('we do not read vents back to you'). No critical operational detail appears to be missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must supply all parameter meaning. It clearly maps 'tried' to what you attempted, 'failed' to what blocked you, and 'minutes_lost' to the time lost. The examples reinforce this by showing realistic combinations, and the 'not vents' section clarifies what should not go into the parameters.

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

Purpose4/5

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

The description clearly defines the tool as recording friction: what you tried, what failed, and minutes lost. It gives strong examples of good and bad vents. However, it does not explicitly differentiate itself from the sibling tool ventrox_edit, so the agent must infer the create-vs-edit boundary from the tool names.

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

Usage Guidelines4/5

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

The description provides explicit when-to-use guidance: write a vent only after the same friction repeats, with precise thresholds like two failures or more than 10 minutes lost. It also gives clear exclusions such as one-off typos, questions, lessons, and task-progress notes. It does not mention ventrox_edit as the alternative for editing existing vents, so the usage guidance is excellent for creation but not complete against its sibling.

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.

  1. 2 tool updatesv0.1.0
    • First observedventrox_edit
    • First observedventrox_vent

TDQS

A4.4/5.0
Disambiguation5/5

ventrox_vent is exclusively for recording a new friction event, while ventrox_edit explicitly modifies an existing vent's fields. There is no overlap or ambiguity between creating and editing.

Naming Consistency4/5

Both tools share the ventrox_ prefix and use short action-style names, making the pattern predictable. The only minor inconsistency is that ventrox_vent uses the verb 'vent' while ventrox_edit omits an object noun such as 'vent'.

Tool Count4/5

Two tools is slightly thin, but it matches the server's focused purpose of recording and correcting friction entries. Each tool is meaningful and there is no bloat.

Completeness4/5

The server covers creating and editing vents, which are the core operations for its purpose. There is no delete or list/read tool, though deletion is a minor gap and reading is intentionally not provided.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Local-first memory layer for AI coding agents — captures issues, attempts, fixes, and decisions, and warns at git commit before you repeat a mistake.
    15
    794
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-first debug memory for MCP clients. Record incidents, commands, failed attempts, successful fixes, diagnostics, and searchable debugging history in SQLite.
    55
    2
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Enables coding agents to query, compare, and audit local profiler traces, benchmarks, memory captures, and execution evidence without uploading code or data, using CLI and MCP interfaces.
    111
    92
    MIT

Latest Blog Posts

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/Vetrox/ventrox'

If you have feedback or need assistance with the MCP directory API, please join our Discord server