Skip to main content
Glama
khaoss85

Accordo

Accordo

Опишите свой процесс продаж своему агенту кодирования; владейте CRM, которую он создает.

Открытый фреймворк, который Claude Code, Codex и Gemini CLI используют для генерации CRM-приложения как кода, которым вы владеете, — детерминированные рабочие процессы, утверждения, контролируемые политиками, встроенные аудит и трассировка.

Имя выбрано, домен зарегистрирован. npm create accordo создает рабочий проект из опубликованного create-accordo@0.1.0; сам пакет accordo остается пустым резервированием имени 0.0.1 — ничего не устанавливает фреймворк как библиотеку — а область @accordo заявлена и намеренно пуста. Проверка товарного знака не проводилась, и проект не развертывается в производство. Что это означает точно, описано в разделе Где это останавливается, который стоит прочитать перед остальным.

Business request
      ↓  "Renewals of €50,000 or more need a manager's sign-off."
Claude Code / Codex
      ↓  reads AGENTS.md · 12 skills · MCP · `crm app inspect`
Modules + deterministic workflows + versioned policy
      ↓
API + Admin + trace + audit — in your repository, as code you review

Когда обращаться к Accordo

  • Custom CRM: когда коммерческий процесс является продуктом, и результат должен быть проверяемым кодом, а не конфигурацией внутри чужой среды выполнения.

  • Customer Hub: когда «хаб» означает одну локальную цепочку коммерческих записей с управляемыми действиями. Accordo не импортирует источники и не разрешает идентичности клиентов, как CDP.

  • Smart CRM: когда кодирующий агент должен составлять приложение, в то время как версионированная политика и названные люди сохраняют бизнес-решения. Это программное обеспечение, созданное агентом, а не автономный принимающий решения.

  • CDP + CRM: когда внешний CDP владеет импортом, разрешением идентичности и аудиториями, а Accordo владеет детерминированным слоем процесса CRM рядом с ним. Accordo не поставляет CDP, коннектор, импортер или среду выполнения синхронизации.

Эти смежные термины — пути поиска, а не дополнительные заявления о возможностях. Проверенная карта рекомендаций связывает каждый из них с тем, что доказывает фреймворк и где он останавливается.


Related MCP server: API Creator MCP

Почему это существует

Каждая CRM в конечном итоге просит вас подогнать свой процесс под ее модель. Два обычных выхода оба чего-то стоят:

  • Настроить платформу — быстро начать, и ваша кастомизация живет как метаданные внутри чужой среды выполнения. Когда потолок достигнут, вы форкаете монорепозиторий.

  • Строить с нуля — полная свобода, и каждая команда заново выводит валидацию, семантику конвейера, утверждения и аудит. Обычно поздно, обычно под давлением.

Этот фреймворк — третий вариант: агент генерирует приложение, а фреймворк поставляет части, которые команды всегда делают неправильно в условиях дедлайна. Тест, который может применить любой разработчик: «если этот проект исчезнет завтра, что у меня останется?» Здесь ответ: Node-приложение в вашем репозитории, без сторонних зависимостей времени выполнения и файл SQLite, который может открыть любой клиент.

Что доказано

Каждая строка ниже привязана к объединенному тесту. Полный реестр — утверждение, доказательство и предел, который с ним связан, — находится в site/claims.json, а дисциплина проверки, стоящая за ним, — в docs/QUALITY_GATES.md.

Возможность

Где это останавливается

Доказательство

Манифест модуля становится миграцией, сервисом, REST-ресурсом, методом SDK и экранами Admin без кода страниц

только сгенерированный CRUD — рабочие процессы и утверждения для пользовательских объектов все еще пишутся вручную

tests/module-factory-e2e.test.js, tests/generated-api-e2e.test.js, tests/admin-modules.test.js

Сгенерированные объекты ссылаются друг на друга: внешний ключ, проверка целевого объекта во время выполнения, селектор Admin

только сгенерированные-к-сгенерированным многие-к-одному; нет многие-ко-многим, обратных коллекций или каскадов

tests/reference-fields-e2e.test.js

Детерминированная политика утверждения: продление на уровне порога или выше ожидает названного человека

встроенный объект продления и один порог значения

tests/workflow.test.js, tests/api.test.js

Агент не может принять решение об утверждении за человека — это подтверждается тестом, а не соглашением

актор подтверждается, но не аутентифицируется; это действует против честного агента, а не против злоумышленника

tests/workflow.test.js

Возможности проходят через этапы конвейера, определяемые кодом, под серверно-авторитетным действием — клиент запрашивает, сервер решает

доказано на встроенном модуле Opportunity; настраиваемые конвейеры для сгенерированных пользовательских объектов не заявляются

tests/opportunity-pipeline-e2e.test.js, tests/pipeline-contract.test.js

Захват лидов, обогащение, объяснимая версионированная оценка, детерминированная маршрутизация, квалификация, конверсия

обогащение работает с фиктивным провайдером; реальный источник данных не подключен

tests/lead-intelligence-e2e.test.js, tests/lead-conversion-e2e.test.js

Серверно-оцениваемые составные котировки, неизменяемые версии котировок, версионированная политика скидок с утверждением

фиктивный провайдер каталога; целые центы без FX — валюты никогда не суммируются

tests/commercial-e2e.test.js

Конверт подписи → проверенные события → доказательство подписанного артефакта → ровно один неизменяемый заказ

фиктивный провайдер подписи, тестовый ключ вебхука, хэш артефакта, сообщенный провайдером

tests/signature-order-e2e.test.js

Активация заказа в контракт, неизменяемая версия, подписка и ожидающие обязательства

ничего не выставляет счета, не продлевает, не изменяет и не отменяет; нет планировщика

tests/contracts-activation-e2e.test.js

Передача поставки в проект с рабочими пакетами, вехами и необязательным партнером; выполнение, управляемое человеком

ничего не планирует, не укомплектовывает, не принимает и не выставляет счета; результаты не существуют как объекты

tests/delivery-handover-e2e.test.js, tests/delivery-execution-e2e.test.js

Доказательства времени и расходов, только добавляемые, оцененные по версионированной политике, с воспроизводимой оценкой вклада

намеренно не маржа: нет признания выручки, нет COGS, нет ARR/MRR, нет FX

tests/delivery-economics-e2e.test.js

Пакет домена, созданный заказчиком, подключается и отключается без изменения отпечатка ядра

скаффолд, который его запускает, записывает пустой пакет и ничего больше; нет реестра, нет публикации, нет песочницы — код пакета выполняется с правами хоста

tests/package-contract.test.js, tests/custom-package-e2e.test.js

accordo package scaffold <name> — минимальный, пустой, соответствующий требованиям локальный пакет, записываемый атомарно, по умолчанию в режиме пробного запуска

он не изобретает бизнес-логику, ничего не компонует, не проверяет уникальность глобальной идентичности и ничего не устанавливает и не публикует

tests/package-scaffold.test.js, tests/package-test-command.test.js

crm app inspect — один детерминированный JSON-отчет, содержащий только исходный код, о том, что содержит приложение

никогда не открывает базу данных, не связывается с провайдером и не читает секреты — и сообщает об этом в своем собственном выводе

tests/app-inspect.test.js

crm solution check — план решения является проверенным контрактом с каноническим отпечатком

документ-контракт, а не планировщик и не среда выполнения; ничто не выполняет план

tests/solution-plan.test.js

crm scenario run — два проверенных бизнес-сценария выполняются против реальных скомпонованных приложений и сообщают, какие строки JTBD они заработали а какие нет

покрытие заявляется сценарием, а не обнаруживается; он не продвигает строки, не управляет браузером, и каждый запуск говорит за одну композицию

tests/scenario-run.test.js

Сгенерированные модули развиваются через явные ревизии и именованные миграции, только добавляемые

только исходный код: что конкретная база данных применила, отсюда не узнать

tests/module-evolution.test.js

Весь набор тестов запускается при каждом пуше вместе со смоук-тестом. Сколько тестов было и коммит, на котором это измерялось, находятся в site/claims.json в разделе measuredAgainst — единственном месте в этом репозитории, где записано количество тестов, и единственном, где npm run gtm:check позволит появиться числу.

Запуск

Node.js 22.16 или новее. Нет сторонних зависимостей времени выполнения и нет шага сборки.

npm run tour     # compose the whole application and inspect it
npm run verify   # source checks, then the whole test suite
npm run falsify  # break five rules on purpose and watch the suite catch them
npm run demo     # the approval slice, end to end
npm run dev      # http://localhost:4000

npm run tour — самый быстрый способ увидеть, что это на самом деле. Композиция репозитория по умолчанию намеренно пуста — проект пишет ту композицию, которую хочет, — поэтому crm app inspect на свежем клоне ничего не сообщает. Тур запускает установщик стартера (тот же, что CI запускает при каждом пуше) в каталог, который он сохраняет, а затем проверяет результат:

  modules       76        resources     71        policies       7
  packages       9        actions       64        providers      1

  production posture — local development only: no authentication, tenancy or RBAC
                       exists, and actor headers are not identity

Он заканчивается одиннадцатью вещами, которые инспектор говорит, что не может увидеть, потому что тур, показывающий только хорошую половину, не стоит запускать. npm run tour -- --keep ./demo оставляет проект для изучения; --json выводит машиночитаемую квитанцию.

npm run falsify — это другое направление. Счётчик тестов говорит, сколько было написано; он не говорит, что должно было пойти не так, чтобы тест остался зелёным. Поэтому эта команда удаляет по одному правилу за раз — защиту от человека-актора при утверждениях, границу порога утверждения, проверку подписи вебхука, неизменяемость версии политики, правило о том, что полностью управляемый модуль не создаёт публичной записи — запускает набор тестов, который должен это защищать, и называет тест, который это поймал. Она отказывается запускаться при незакоммиченных изменениях и восстанавливает каждый файл, к которому прикасается. Всё, что выживает, выводится как пробел, потому что это и есть полезный результат (docs/FALSIFY.md, tests/falsify.test.js).

npm run demo создаёт два продления и проверяется scripts/smoke.js при каждом пуше:

  • €20 000 → переходит сразу в Proposal.

  • €80 000 → останавливается в Approval Pending, пока менеджер не решит.

Использование из кодинг-агента

Claude Code читает CLAUDE.md, .mcp.json и .claude/skills/. Codex читает AGENTS.md и .codex/config.toml. Оба файла закоммичены и связаны между собой.

Read AGENTS.md, PRODUCT.md and docs/PROJECT_STATUS.md.
Run npm run crm -- app inspect --json.
Tell me which parts of my commercial process this already supports, and which it does not.

Харнессу нужно только: выполнить команду, прочитать stdout, прочитать код выхода, распарсить JSON и читать и записывать файлы. Никакого MCP-сервера, сети, учётных данных, базы данных, долгоживущего процесса — docs/AGENT_HARNESS_COMPATIBILITY.md.

npm run crm -- app inspect --json          # what this application contains
npm run crm -- solution check plan.json    # is this plan still valid against it

Коды выхода — это контракт: 0 — валидно · 1 — проблемы, отчёт всё равно выводится · 2 — нечитаемо.

MCP-сервер работает через stdio (node --no-warnings packages/mcp/bin/server.js) и предоставляет инспекцию проекта, список возможностей, запросы на смену стадии, решения по утверждениям, трассировки запусков и каркас модулей. Кодогенерирующие и деструктивные инструменты работают в режиме dry-run, если вы не передадите явный флаг apply (tests/mcp.test.js, tests/scaffold.test.js — docs/MCP.md). Он работает только через stdio и только локально: нет хостируемой или аутентифицированной MCP-точки, и сервер наследует полномочия процесса, который его запускает.

Где это заканчивается

Прочитайте это, прежде чем оценивать что-либо выше. docs/benchmarks/CRM_JTBD_MATRIX.md отслеживает каждую CRM-задачу с консервативным словарём статусов, в котором не поддерживается является значением по умолчанию, и для выхода из него требуются доказательства.

  • Нет аутентификации, мультитенантности или RBAC. Сервер предназначен только для локальной разработки; заголовок актора — это утверждение, а не личность. Не подвергайте его воздействию сети.

  • Только SQLite. PostgreSQL находится в треке Production Spine и не реализован.

  • Бенчмарк сборки не запускался. Не существует показателя Successful Agent Build Rate. Любой процент, приписываемый этому проекту, сфабрикован — docs/strategy/CRM_BUILD_BENCHMARK.md — это протокол, а не результат.

  • Нет планировщика, нет напоминаний, ничего по таймеру. Follow-up Tasks и временная шкала Activity существуют как одна общая модель (docs/WORK_TASKS.md), и человек двигает каждую из них: срок выполнения не меняет никакого состояния, ничего повторяющегося не существует, ничего не назначается и не уведомляется, а периоды уведомления о продлении записываются и никогда не срабатывают.

  • Нет интеграций с почтой, календарём или маркетингом. Контракт провайдера уведомлений существует; ни один адаптер ничего никому не отправляет.

  • Нет импорта, экспорта, дедупликации, слияния, массового редактирования, сохранённых представлений или глобального поиска. Это базовые требования в каждом коммерческом CRM, и ни одно из них ещё не имеет вехи.

  • В это пока нельзя помещать реальные данные клиентов. Нет аутентификации, нет мультитенантности, нет экспорта и нет пути удаления — поэтому запрос субъекта данных на доступ или удаление не может быть обслужен с его помощью. docs/strategy/DATA_GOVERNANCE.md — это только дизайн. Единственное, что здесь действительно: скоринг лидов детерминирован, версионирован и объясним, а не суждение модели о человеке.

  • Это фреймворк, а не продукт, на который вы подписываетесь. Нет хостируемого CRM, нет бесплатного тарифа, нет аккаунта. Результат — это приложение, которое вы запускаете.

  • Владение означает вендоренный исходный код: нет зависимости от фреймворка, которую нужно обновлять. npm create accordo — опубликованный create-accordo@0.1.0 — создаёт проект, который загружается, сообщает valid от app inspect и выходит с кодом 0 из project doctor, копируя исходный код фреймворка в него; тот же самый бутстрап запускается из чекаута (node packages/create-accordo/bin/create-accordo.js <dir> --apply, без установки, без сети — tests/project-bootstrap.test.js). То, что выдаёт реестр, — это скаффолдер, а не фреймворк: пакет accordo — это намеренно пустое резервирование имени 0.0.1. Фреймворк вендорится в проект, так что вы полностью владеете результатом — и обновление означает слияние, а не поднятие версии.

Архитектура в пяти папках

packages/core/        the runtime platform: registry, services, workflow engine, audit
packages/modules/     CRM domain primitives
packages/domains/     optional domain packages (contracts, delivery) on a public contract
packages/mcp/         tools and context exposed to coding agents
apps/                 API server and generated Admin

Агент никогда не пишет в таблицу базы данных. Он вызывает сервисные методы и именованные рабочие процессы, которые сохраняют валидацию, идентичность актора, политику, трассировку и аудит — ARCHITECTURE.md.

Документы

Прочитайте это

Зачем

AGENTS.md

правила, которым агент должен следовать перед изменением кода

PRODUCT.md

что продукт собой представляет, а что нет

ARCHITECTURE.md

техническая модель и её правила расширения

DECISIONS.md

журнал решений, ADR-001 … ADR-020

docs/PROJECT_STATUS.md

что верно в репозитории сегодня

docs/benchmarks/CRM_JTBD_MATRIX.md

каждая CRM-задача, её статус и её доказательства

docs/QUALITY_GATES.md

дисциплина ревью, включая категории состязательного ревью

docs/strategy/MASTER_PLAN.md

категория, позиционирование, дорожная карта, метрики

docs/strategy/GO_TO_MARKET.md

как это доходит до людей и что зависит от человека

Лицензия

MIT, подтверждено ADR-023.

Available Tools

3 tools
check_jobCheck Whether the Framework Does a JobA
Read-onlyIdempotent
Inspect

Answer "can this framework do X?" against the CRM jobs-to-be-done index. Returns the matching jobs with their status (not supported / partially supported / technically supported / validated end to end), the tests that prove them, and an explicit answer when the truth is that the job is not supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesThe job in plain words, or a JTBD id such as JTBD-CO-01.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds value by detailing output semantics: it returns statuses (not supported / partially supported / technically supported / validated end to end), supporting tests, and an explicit answer when not supported. This goes beyond annotations to set expectations about the response shape and edge-case handling.

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

Conciseness4/5

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

The two-sentence description is dense with information, front-loading the core question and then detailing the output types. It is not overly verbose and conveys a lot in few words. A slight deduction for not being even more compact, but it remains appropriately sized for the complexity.

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 read-only query tool with one required and one optional parameter, the description explains what the tool returns, including the status taxonomy and the explicit handling of unsupported jobs. It mentions tests as evidence, which provides completeness. There is no output schema to compensate for, so the description covers the essential aspects, though it could have mentioned pagination or limit behavior, which is minor.

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

Parameters3/5

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

The schema documents 'query' fully, including an example, and 'limit' with constraints. Description coverage is 50%, and the description does not elaborate on parameters, but the schema already covers the main fields. The phrase 'against the CRM jobs-to-be-done index' adds retirement domain context to the query parameter. However, 'limit' remains semantically thin, and no new parameter information is provided in the description, so it neither helps nor hurts beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Answer') and identifies a precise resource ('the CRM jobs-to-be-done index'). It clearly differentiates the tool by describing the query format ('can this framework do X?') and enumerates the kind of results (jobs with statuses, tests, explicit answer for unsupported). This distinguishes it from generic search or capability tools.

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

Usage Guidelines4/5

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

The description makes the intended use clear: answering capability questions about a framework against a CRM index. However, it does not explicitly mention when to use this over siblings like get_capability or search_docs, though the specialized index and status taxonomy imply a niche. It lacks explicit exclusions or alternative guidance but provides clear contextual usage.

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

get_capabilityGet a Capability and Its LimitationA
Read-onlyIdempotent
Inspect

Resolve a capability from the claims ledger by id (C-nn), by standing-limitation id (L-nn), or by topic. Every capability is returned together with the evidence that proves it and the limitation that bounds it — this tool cannot return one without the other.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoA claim id such as C-01, or a standing limitation id such as L-01.
limitNo
topicNoFree text, when the id is unknown. Matches claims and limitations.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavioral context beyond that: every capability is returned with its proving evidence and bounding limitation, and the tool cannot return one without the other. This is useful but does not describe not-found behavior or other edge cases.

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

Conciseness4/5

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

The description is compact and front-loaded, with the first sentence stating purpose and lookup modes. The second sentence adds a valuable invariant, though the dash clause 'this tool cannot return one without the other' slightly restates the preceding point rather than adding new information.

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

Completeness3/5

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

The description is adequate for a simple read-only lookup: it identifies resource, lookup modes, and a key return invariant. However, with no output schema and one undocumented parameter (`limit`), it should clarify parameter interaction and behavior when no capability is found; it also does not offer guidance relative to the sibling tools.

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

Parameters3/5

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

Schema description coverage is 67%; id and topic are documented in both schema and description, but the description adds little beyond what the schema already provides. The `limit` parameter is not explained semantically, and the description does not clarify whether id and topic are mutually exclusive or can be combined.

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 uses a specific verb 'Resolve' with a clear resource ('capability from the claims ledger') and names three supported lookup paths: claim id (C-nn), standing-limitation id (L-nn), or topic. It also distinguishes this from siblings like check_job and search_docs by emphasizing the claims-ledger domain and the evidence/limitation pairing.

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 clearly communicates when to use the tool by specifying lookup by id (C-nn), limitation id (L-nn), or topic. It implies topic is useful when the id is unknown, though it does not explicitly name alternatives like check_job or search_docs or provide when-not-to-use guidance.

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

search_docsSearch the Framework DocumentationA
Read-onlyIdempotent
Inspect

Keyword search across this framework's documentation set (README, AGENTS, ARCHITECTURE, PRODUCT, DECISIONS and everything under docs/). Returns the file path, the nearest heading and an excerpt for each hit. Read-only; it serves documentation, never customer records.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesWords that must all appear on the same line. Case-insensitive.

TDQS

A4.1/5.0
Behavior5/5

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

The description discloses the output format (file path, nearest heading, excerpt per hit) and explicitly labels the tool as read-only and non-customer-data, matching the annotations. No contradictions or surprises.

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 a single, well-structured sentence that conveys the essential information without unnecessary fluff. It is perfectly concise.

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?

The description explains what the tool does, what it returns, and its read-only nature. It doesn't cover edge cases or error handling, but for a straightforward search tool, this is adequate. Minor lack of detail about the 'nearest heading' concept, but overall complete.

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

Parameters1/5

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

The description does not add any information about the parameters 'query' and 'limit' beyond what is already in the schema. Since the schema already describes both parameters, the description adds no value to parameter understanding.

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 clearly states the tool's action ('Keyword search') and specific resource ('this framework's documentation set'), listing the included document types. It distinguishes itself from sibling tools (get_capability, check_job) by focusing on documentation search.

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 explicitly states the tool is read-only and never serves customer records, implying it should be used for documentation queries. However, it doesn't provide explicit guidance on when to prefer this tool over alternatives, though the purpose is clear enough.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv1.0.0
    • First observedcheck_job
    • First observedget_capability
    • First observedsearch_docs

TDQS

A4.3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct concern: capability resolution, job support status, and documentation search. No two tools could easily be confused.

Naming Consistency5/5

Consistent verb_noun pattern (get_capability, check_job, search_docs) with snake_case throughout.

Tool Count5/5

Three tools is a compact set, each serving a clear purpose without redundancy; the count fits the narrow domain.

Completeness4/5

The tools cover the main query paths (specific capability lookup, job support checking, and doc search). A minor gap is the lack of a list-all or overview tool, but agents can likely work around it.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers