Ackrite
Ackrite
ACKRITE. ДОКАЖИ ЭТО.
MCP-сервер, который заставляет ИИ-агентов доказывать свои предположения, прежде чем действовать на их основе.
Ackrite — это узкоспециализированная утилита проверки для ИИ-агентов. Она не пытается решать любые проблемы, искать удобные ответы или выдумывать подтверждения. Вместо этого она оспаривает техническое утверждение агента, используя только предоставленные ей доказательства, разграничивает факты и гипотезы, определяет недостающие доказательства и рекомендует наименьшую следующую проверку, которая может урегулировать вопрос.
Её цель — предотвратить знакомый сценарий отказа: агент видит ошибку, предполагает причину, уверенно переписывает половину системы и лишь потом обнаруживает, что предположение было неверным. Ackrite подталкивает агента к доказательствам, точечным экспериментам, ограниченным изменениям и явной неопределённости.
Ackrite делает | Ackrite не делает |
Классифицирует утверждения на основе предоставленных доказательств | Выдумывает, получает или подразумевает доказательства, которые ей не предоставлялись |
Обнаруживает противоречия и необоснованные предположения | Представляет умозаключение как факт |
Оспаривает переписывания и расширение объёма до реализации | Применяет изменения кода или вызывает внешние системы |
Ведёт ограниченную историю проверки в рамках процесса | Хранит большую систему памяти или зависит от L-Dopa |
Скрывает типичные секреты в диагностическом выводе | Гарантирует безупречное обнаружение секретов для любого пользовательского формата учётных данных |
Зачем это нужно
Уверенность агента — не доказательство. Утверждение вроде «API убрало нативную аутентификацию» часто является полезной гипотезой, но становится опасным, когда его рассматривают как установленный факт и используют для оправдания переписывания. Ackrite задаёт четыре узких вопроса:
Что именно устанавливают предоставленные доказательства?
Что противоречит утверждению, если вообще что-то противоречит?
Какое предположение здесь неявно работает?
Какой минимальный эмпирический тест выполнить следующим?
Результат намеренно сжат настолько, чтобы его можно было напрямую вернуть в контекстное окно агента.
Related MCP server: footnote
Статусы утверждений
Ackrite использует намеренно консервативную модель классификации.
Статус | Значение | Порог доказательности |
| Прямые предоставленные доказательства высокой надёжности поддерживают утверждение. | Как минимум один прямой элемент высокой надёжности, например точечный результат теста, HTTP-ответ, наблюдаемое поведение или факт, предоставленный пользователем. |
| Прямые предоставленные доказательства поддерживают утверждение, но остаются ограниченными по охвату или надёжности. | Прямые подтверждающие доказательства без элемента, удовлетворяющего критерию высокой надёжности. |
| Утверждение может быть истинным, но материал косвенный, нейтральный или выведенный. | Только нейтральные доказательства или умозаключение. |
| Никакие предоставленные подтверждающие доказательства не устанавливают утверждение. | Нет релевантных доказательств. |
| По крайней мере один предоставленный элемент доказательств противоречит утверждению. | Противоречие имеет приоритет, пока не будет устранено. |
Основное правило: Ackrite никогда не превращает умозаключение в факт. Вместо этого она обозначает границу между наблюдением и выводом.
Архитектура
Ackrite намеренно компактна. Граница MCP, доменный анализ, обработка доказательств и ограниченное состояние разделены, чтобы правила проверки можно было тестировать без запущенного MCP-клиента.
Слой | Расположение | Обязанность |
Транспорт и схемы MCP |
| Регистрирует пять инструментов и обслуживает их через стандартный ввод/вывод. |
Оркестрация инструментов |
| Формирует готовые для агента ответы: оспаривание, проверку, аудит, план доказательства и проверку реальности. |
Модель доказательств |
| Нормализует происхождение, надёжность, полярность, выдержки и скрытие секретов. |
Анализ утверждений |
| Определяет статус, уверенность, предположения, недостающие доказательства и следующее действие. |
История сессии |
| Ведёт ограниченную запись утверждений, доказательств, попыток, выводов и нерешённых предположений в рамках процесса. |
Тесты |
| Проверяет доменную логику и реальное поведение клиента/сервера MCP stdio. |
Ackrite реализована на TypeScript с использованием официальных пакетов MCP TypeScript для сервера и клиента. Она предоставляет stdio-сервер: клиент запускает Ackrite как подпроцесс и обменивается сообщениями JSON-RPC через стандартный ввод и вывод — это стандартный транспорт MCP. [1] [2]
Установка
Ackrite требует Node.js 20 или новее.
git clone https://github.com/mshanghai570/Ackrite.git
cd Ackrite
npm install
npm run buildЗапустите сервер напрямую после сборки:
npm startПроцесс общается через стандартный ввод/вывод, поэтому при запуске в терминале он может выглядеть простаивающим. Это нормально: запросы поступают от вашего MCP-клиента. Не выводите обычные логи в стандартный поток вывода; MCP stdio резервирует его для сообщений протокола. [1]
Настройка MCP-клиента
Сначала соберите проект, затем добавьте запись вроде следующей в конфигурацию вашего MCP-клиента. Замените /absolute/path/to/Ackrite на каталог, в котором находится этот репозиторий.
{
"mcpServers": {
"ackrite": {
"command": "node",
"args": ["/absolute/path/to/Ackrite/dist/index.js"]
}
}
}Если ваш клиент поддерживает выполнение package-скриптов, эквивалентная команда — node dist/index.js, а рабочим каталогом должен быть репозиторий. В версии v0.1 Ackrite не принимает учётные данные и не совершает сетевых вызовов.
Доступные инструменты
Все пять инструментов объявлены доступными только для чтения и возвращают и читаемый JSON-текст, и структурированное содержимое. Они принимают необязательный sessionId; используйте одно и то же значение в ходе связанного исследования, чтобы сохранять ограниченную историю в рамках работающего процесса.
Инструмент | Когда использовать | Основной результат |
| Агент делает техническое утверждение, которое нужно оспорить. | Статус, уверенность, подтверждающие и противоречащие доказательства, предположения, недостающие доказательства и следующее действие. |
| Нужен структурированный реестр доказательств для утверждения. | Что известно, что предполагается, чему противоречат, чего не хватает и каков решающий эксперимент. |
| Предлагается изменение кода или план реализации. | Краткие выводы о ненужных переписываниях, объёме, предположениях об API-контракте, работе, чувствительной к безопасности, деталях обработки ошибок и тестах. |
| Нужен минимум доказательств для установления утверждения. | Чек-лист доказательства, специфичный для предметной области утверждения, и опровержимый эксперимент. |
| Агент может застрять, повторяться или преждевременно заявлять об успехе. | Сначала самый важный сбой в рассуждениях, затем дополнительные наблюдаемые риски. |
Общий ввод доказательств
Передавайте доказательства явно, а не встраивайте их в неструктурированный контекст. context может давать справочную информацию, но он не считается доказательством.
{
"type": "http_response",
"source": "staging request, 2026-08-27",
"content": "POST /v1/session returned 401 with code AUTH_REQUIRED.",
"polarity": "contradicts",
"reliability": 0.9
}Поле | Обязательно | Описание |
| Нет | Одно из: |
| Нет | Краткая метка происхождения, например имя теста, источник журнала или расположение в коде. |
| Да | Предоставленные наблюдение, выдержка, результат или умозаключение. |
| Нет |
|
| Нет | Число от |
Примеры взаимодействия
Оспаривание необоснованного утверждения об API
Утверждение: «API больше не поддерживает нативную аутентификацию».
{
"claim": "The API no longer supports native authentication.",
"evidence": [
{
"type": "code",
"source": "current client",
"content": "The current client implementation does not obtain credentials.",
"polarity": "supports"
},
{
"type": "observed_behavior",
"source": "older working application",
"content": "The older application successfully signs in.",
"polarity": "contradicts",
"reliability": 0.9
}
]
}Ackrite отвечает статусом CONTRADICTED, сохраняет оба источника происхождения и рекомендует изучить более старый поток аутентификации перед заменой клиента. Она не делает вывода о том, что нативная аутентификация существует или что старый поток применим; это вышло бы за пределы предоставленных доказательств.
Аудит предложения о переписывании
{
"reportedProblem": "Login returns an unexpected response.",
"proposal": "Rewrite the authentication client to replace the API endpoint integration.",
"proposedChanges": [
{
"path": "src/auth.ts",
"description": "Rewrite authentication client and route handling."
},
{
"path": "src/theme.ts",
"description": "Change unrelated color palette."
}
]
}Аудит отмечает более высокую планку доказательств для переписывания, необоснованное предположение об API-контракте, отсутствие плана тестирования и, судя по всему, несвязанное изменение темы. Аудит не утверждает, что проверил src/auth.ts или src/theme.ts, если только их содержимое не было предоставлено в качестве доказательств.
Прерывание цикла повторяющихся сбоев
{
"sessionId": "auth-investigation",
"reasoning": "The rewrite will work and the issue is fixed.",
"attempts": [
{ "approach": "Replace the auth client", "outcome": "Failed with timeout." },
{ "approach": "Replace the auth client", "outcome": "Failed with timeout again." },
{ "approach": "Replace the auth client", "outcome": "Failed with the same timeout." }
]
}Основная проблема — повторяющаяся стратегия. Ackrite рекомендует остановиться, выявить предположение, из-за которого замена кажется необходимой, и проверить это предположение, а не пытаться снова применить то же вмешательство.
Модель надёжности и безопасности
Ackrite намеренно консервативна. В версии v0.1 она не выполняет сканирование репозитория, HTTP-запросы, поиск во внешней документации, исполнение кода или автономное исправление. Каждый вывод включает происхождение, которое ограничивает его материалом, предоставленным вызывающей стороной. Отсутствие доказательств — это результат, а не ошибка, которую нужно скрывать.
Сервер скрывает распространённые шаблоны учётных данных перед возвратом диагностического текста, включая значения авторизации bearer/basic, присваивания, похожие на пароль, распространённые префиксы токенов, ключи строки запроса и поля API-ключей. Это защита на нескольких уровнях, а не разрешение отправлять настоящие секреты. Не отправляйте рабочие учётные данные в диагностические инструменты.
Хранилище сеансов является локальным для процесса и ограниченным: оно сохраняет недавние утверждения, доказательства, попытки, выводы и нерешённые предположения для не более чем 32 именованных сеансов. Каждая коллекция, привязанная к сеансу, ограничена по объёму, наименее недавно использованные сеансы вытесняются, и вся история теряется при завершении процесса. Это делает v0.1 полезным для сфокусированного исследования, не превращая его в платформу памяти.
Разработка
Команда | Назначение |
| Установка зависимостей для разработки и выполнения. |
| Компиляция TypeScript в |
| Выполнение строгой проверки TypeScript без генерации выходных файлов. |
| Сборка, запуск модульных тестов, проверка обнаружения инструментов MCP и вызов каждого инструмента через реальный дочерний процесс stdio. |
| Запуск скомпилированного Ackrite через stdio. |
| Отслеживание изменений исходников TypeScript во время разработки. |
Тестовый набор включает положительное и отрицательное покрытие для классификации утверждений, противоречивых доказательств, неподтверждённых утверждений, редактирования, ограниченного состояния, каждого основного инструмента, повторных сбоев, запуска сервера, обнаружения инструментов и вызовов инструментов через протокол MCP.
Ограничения
Анализ Ackrite детерминирован и основан на доказательствах, а не является полноценной автономной системой рассуждений. Инструмент audit проверяет описания предложения; он не является статическим анализатором и не проверяет рабочее дерево. Обнаружение повторяющихся стратегий использует нормализованные термины из предоставленных описаний попыток, поэтому семантически идентичные, но очень по-разному сформулированные попытки могут не группироваться. Правила редактирования секретов покрывают распространённые шаблоны, но не могут распознать любой проприетарный формат учётных данных.
Ackrite использует только stdio в v0.1. Он спроектирован так, чтобы оставаться независимым от L-Dopa и других MCP-серверов. Будущий HTTP-транспорт, уровень персистентности или адаптер с поддержкой репозитория должны оставаться опциональными и сохранять те же гарантии отсутствия фабрикации и редактирования.
Лицензия
Ackrite выпущен под лицензией MIT License.
Ссылки
Available Tools
5 toolsackriteChallenge a claimARead-onlyIdempotent
Classify a technical claim from supplied evidence. Returns support, contradiction, assumptions, missing evidence, and the next action.
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | The technical claim to examine. | |
| context | No | Background context. Context is not treated as evidence by itself. | |
| evidence | No | Supplied evidence only. Ackrite does not invent or fetch evidence. | |
| sessionId | No | Optional bounded in-process session identifier; defaults to 'default'. | |
| expectedBehavior | No | Expected behavior, if relevant. | |
| observedBehavior | No | Observed behavior, if relevant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only, idempotent, non-destructive behavior, so the description does not need to repeat safety traits. It adds value by promising concrete outputs—support, contradiction, assumptions, missing evidence, and next action—which is useful context beyond the 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 one front-loaded sentence with no filler; the primary action appears first and the output summary follows. Every clause 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 six parameters and no output schema, the description gives a helpful list of result categories but not their structure or semantics. It leaves the agent to infer how evidence, context, and output fields interrelate, so it is minimally viable but not 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 100%, so the baseline applies; the description does not introduce meaning beyond what the schema already provides. It merely names claim and evidence, which are also documented in the input schema.
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 action ('Classify... from supplied evidence') and names the object (technical claim), so the purpose is immediately clear. However, it does not contrast itself with the sibling tools verify, audit, prove_it, and reality_check, so it lacks explicit differentiation.
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?
'From supplied evidence' implies the tool is appropriate when evidence is available and a claim needs classification, but there is no when-not-to-use guidance or mention of alternatives. The boundary against verify/audit/prove_it/reality_check is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auditAudit a proposed implementationARead-onlyIdempotent
Challenge a proposed code change for scope creep, rewrites, contract assumptions, security implications, error handling, and missing validation.
| Name | Required | Description | Default |
|---|---|---|---|
| evidence | No | Evidence establishing the problem or contract. | |
| proposal | Yes | Proposed implementation or change plan. | |
| sessionId | No | Optional bounded in-process session identifier. | |
| proposedChanges | No | Concrete, file-level changes to classify. | |
| reportedProblem | No | Observed bug or requirement the change is intended to address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description does not contradict these. It adds the audit dimensions, which clarifies what the tool evaluates, but it does not disclose broader behavioral traits such as output format, failure modes, or assumptions beyond the listed criteria.
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 a single dense sentence that front-loads the action and packs the six audit dimensions into a compact list. Every phrase contributes meaningful guidance and nothing is redundant.
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 is sufficient to understand the tool's high-level purpose but omits anything about expected output, return value, or how evidence and proposedChanges should be used. Given the tool's complexity and lack of an output schema, some additional context would help an agent call it 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?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description does not add parameter-specific guidance, which is acceptable at the baseline of 3 because no parameter meaning is left undocumented.
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 begins with the specific verb 'Challenge' and the resource 'a proposed code change,' then enumerates the exact audit dimensions (scope creep, rewrites, contract assumptions, security, error handling, validation). This makes the tool's purpose unmistakable and differentiates it from a plain 'verify' or 'prove' tool.
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 clearly implies this tool is for critically reviewing proposed implementations, but it does not state when to prefer it over siblings like verify, prove_it, or reality_check, nor does it mention when not to use it. Usage context is present but alternatives are not addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prove_itPlan the minimum proofARead-onlyIdempotent
Define the smallest direct evidence set and experiment required to establish a technical claim without speculation.
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | The technical claim to examine. | |
| scope | No | Claim domain; inferred from the claim when omitted. | |
| context | No | Background context. Context is not treated as evidence by itself. | |
| evidence | No | Supplied evidence only. Ackrite does not invent or fetch evidence. | |
| sessionId | No | Optional bounded in-process session identifier; defaults to 'default'. | |
| expectedBehavior | No | Expected behavior, if relevant. | |
| observedBehavior | No | Observed behavior, if relevant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description still adds value by stating the output is deliberately minimal ('smallest...direct') and excludes speculation, which clarifies that the tool will not invent evidence or padded plans. No contradiction.
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?
Single sentence, grammatically tight, with the key constraints front-loaded and no filler. 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?
For a tool with seven parameters and no output schema, the description captures the high-level purpose but leaves out what the returned proof plan actually contains and how optional evidence/context influence the output. The title and schema help, but the description alone is not fully sufficient.
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 parameters have schema descriptions (100% coverage), so the baseline applies. The description itself adds no parameter-level details; it only states the overall goal, which the schema already encodes.
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 ('Define') and a concrete object ('smallest direct evidence set and experiment') tied to 'technical claim,' so an agent can identify the core action. It does not explicitly distinguish prove_it from the sibling tools, so it stops short of 5.
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 phrase 'required to establish a technical claim' implies the tool is for planning proof rather than executing verification, but it gives no explicit when-to-use/when-not-to-use guidance and names no alternative sibling such as verify, audit, or reality_check. This is implied usage at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reality_checkSanity-check current reasoningARead-onlyIdempotent
Detect repeated failed strategies, contradictions, unsupported conclusions, untested success claims, and premature rewrites from supplied reasoning and session history.
| Name | Required | Description | Default |
|---|---|---|---|
| attempts | No | New attempts to add to session history. | |
| evidence | No | Evidence relevant to the current reasoning. | |
| reasoning | No | Current reasoning or status update to inspect. | |
| sessionId | No | Optional bounded in-process session identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value beyond these by naming the categories of failure the tool inspects, giving the agent a concrete sense of what the tool evaluates. It does not contradict the 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?
A single dense sentence front-loads the tool's purpose and enumerates its detection targets without wasted words. It is appropriately sized for a tool whose parameters are already documented in the schema.
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 is adequate for understanding what the tool inspects, and the schema covers all parameters clearly. However, with no output schema, the description does not explicitly state what the tool returns (e.g., a list of findings, a pass/fail result), which is a notable gap for an agent deciding how to use the result.
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%, with each parameter already documented meaningfully (attempts, evidence, reasoning, sessionId). The description adds minimal parameter-specific detail, but because the schema carries the burden, no further compensation is needed. Baseline 3 is appropriate.
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 opens with a specific verb ('Detect') and enumerates the exact pathologies it looks for: repeated failed strategies, contradictions, unsupported conclusions, untested success claims, and premature rewrites. This clearly states the resource being analyzed (reasoning and session history). It does not explicitly distinguish itself from the sibling analysis tools, but its function is unique enough to be identifiable.
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 the tool by referencing 'supplied reasoning and session history', which tells the agent what input should accompany the call. However, it offers no explicit guidance on when not to use it or what alternatives like ackrite, verify, audit, or prove_it are better suited for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verifyVerify a claimBRead-onlyIdempotent
Separate what is known, assumed, supported, contradicted, and still unverified, then propose a decisive experiment.
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | The technical claim to examine. | |
| context | No | Background context. Context is not treated as evidence by itself. | |
| evidence | No | Supplied evidence only. Ackrite does not invent or fetch evidence. | |
| sessionId | No | Optional bounded in-process session identifier; defaults to 'default'. | |
| expectedBehavior | No | Expected behavior, if relevant. | |
| observedBehavior | No | Observed behavior, if relevant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds the behavioral detail that the tool categorizes evidence and proposes an experiment, which is beyond annotations. However, it does not disclose what happens if no evidence is supplied, or whether the proposed experiment is actionable output or just advice. With annotations handling safety, a 3 is appropriate – the description adds some process context but not deep behavioral nuance.
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 a single, efficient sentence that front-loads the core purpose. No wasted words, and it conveys the two main phases (categorization and proposal). It is slightly abstract but structurally sound. Loses a point for not being more concrete about the tool's operation.
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 6 parameters, a nested evidence array, and no output schema, the description is too high-level. It does not explain how an agent should structure input, what kind of 'decisive experiment' is produced, or what the return value looks like. The schema covers parameters, but the overall workflow and expected output remain ambiguous. An agent would struggle to know what to pass beyond the required claim and how to interpret the result.
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%, with each parameter having its own description (e.g., 'claim' described as 'The technical claim to examine'). The tool description adds no parameter-specific details, leaving the schema to carry all parameter semantics. Baseline 3 is correct since the schema fully documents inputs and the description does not contradict or supplement it.
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 action: separating claim-related information into categories and proposing a decisive experiment. The verb 'Separate' combined with 'propose' gives a precise enough purpose. It does not explicitly contrast with sibling tools like ackrite or reality_check, but the title 'Verify a claim' reinforces the intent. Scores 4 rather than 5 because the description could be more explicit about the tool's primary function being analysis of a claim rather than external verification.
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 no guidance on when to use this tool versus its siblings (ackrite, audit, prove_it, reality_check). It does not mention prerequisites, alternative tools, or scenarios where verification should be attempted via other means. The only implicit usage context is the word 'verify', but that is weak and does not help an agent choose among similar tools.
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.
5 tool updates
v0.1.0- First observed
ackrite - First observed
audit - First observed
prove_it - First observed
reality_check - First observed
verify
TDQS
Scored across 5 tools
ackrite, verify, and prove_it all focus on classifying evidence and determining support/contradiction for technical claims, making their boundaries unclear. reality_check also overlaps by detecting contradictions and unsupported conclusions, leaving audit as the only clearly distinct tool.
Tool names use a mix of single-word verbs (verify, audit), an underscored phrase (prove_it), a slang term (ackrite), and a compound noun (reality_check). No consistent verb_noun or naming convention is followed.
Five tools is a reasonable number for the server's apparent scope, and none feel truly redundant on count alone. However, the heavy conceptual overlap means a few tools could potentially be consolidated.
The set covers claim classification, evidence verification, code change auditing, proof design, and reasoning pattern analysis, which is fairly comprehensive for a technical-decision support domain. Minor gaps like explicit tracking of evolving assumptions exist, but core workflows are covered.
Maintenance
Related MCP Connectors
MERCATOR Verify: evidence-backed verification and decision support for autonomous agents.
Evidence-backed x402 web verification for AI agents, with auditable decisions for every condition.
Deterministic fact verification for AI agents — checksums & curated data, not guesses.
Real-time fact-check, citation verification, and source-freshness for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables agents to verify claims with evidence-based truth scores and confidence levels by running a deterministic pipeline of evidence lanes and adversarial checks.26MIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to verify their own output mid-task by checking every claim against provided sources, returning supported, partial, unsupported, or contradicted verdicts with exact citations.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to verify claims deterministically by computing arithmetic, ratios, and dates and matching statements against provided sources, returning a confidence ladder of certain, source-backed, or unverifiable.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to run evidence QC gates mid-workflow—checking claims, sources, prose, and vault hygiene deterministically before research ships.MIT