xaf-logic-explainer
XAF Logic Explainer
AI 코딩 에이전트에게 여러분의 XAF 애플리케이션이 실제로 무엇을 하는지 가르쳐주세요.
XAF 모듈을 가리키기만 하면 됩니다. 엔티티, 컨트롤러, 액션, 비즈니스 규칙, 탐색 및 모델 편집기 사용자 지정을 소스 코드에서 직접 읽어와서 여러분이 코드를 작성하는 모든 에이전트에 결과를 전달합니다.
이 도구가 필요한 이유
DevExpress는 AI 에이전트가 XAF에 능숙해지도록 훌륭한 작업을 해왔습니다. 이미 두 가지 도구가 존재하며, 이것이 세 번째입니다:
에이전트에게 가르치는 내용 | 도구 |
XAF가 일반적으로 어떻게 작동하는지 | |
공식 문서가 무엇을 말하는지 | |
여러분의 애플리케이션이 무엇을 하는지 | XAF Logic Explainer ← 현재 위치 |
XAF 문서의 모든 페이지를 읽은 에이전트라도 여러분의 Invoice 합계가 라인 항목에서 계산된다는 것, ApproveController가 기간이 마감되면 실행을 거부한다는 것, 또는 세 개의 열이 모델 편집기에서 숨겨져 있고 어떤 C# 파일에도 나타나지 않는다는 것을 알지 못합니다. 이 세 가지를 모두 자신 있게 지어낼 것입니다.
이 격차는 더 나은 프롬프트로 해결할 수 없습니다. 추출로 해결할 수 있습니다.
이 도구들은 함께 구성됩니다. 프레임워크 지식을 위해 DevExpress 스킬을 설치하고, 공식 참조를 위해 Docs MCP를 사용하며, 여러분의 코드베이스를 위해 이것을 사용하세요. 그 어떤 것도 다른 것을 대체하지 않습니다.
Related MCP server: mcp-digger
추출하는 내용
아래의 모든 것은 Roslyn을 사용하여 구문으로 읽힙니다. 프로젝트를 컴파일할 필요가 없으며, 이 도구는 DevExpress 어셈블리에 대해 링크하지 않습니다:
엔티티 — 속성, 타입, 연관 관계, 그리고 의미를 부여하는 XAF 속성 (
[Association],[Aggregated],[RuleRequiredField],[Appearance],[ModelDefault], …). XPO 및 EF Core,using문에서 자동 감지됩니다.컨트롤러 및 액션 —
SimpleAction,PopupWindowShowAction,SingleChoiceAction, 대상 기준 및 실행될 때 실행되는 핸들러 코드.비즈니스 규칙 — 유효성 검사 속성 및 코드 규칙, 첨부된 조건 포함.
모듈 설정 —
ModuleUpdater시드 데이터 및 첫 실행 시 생성되는 내용.탐색 — 사용자가 실제로 보는 그룹 및 항목.
모델 편집기 (
.xafml) — C# 코드를 읽는 사람에게는 보이지 않고 XML에만 존재하는 사용자 지정. 모듈 및 플랫폼 파일은 XAF가 병합하는 방식으로 병합됩니다.사용자 정의 속성 및 목록 편집기 — 작동에 필수적인 JavaScript를 포함하며,
View.CustomizeViewItemControl<T>()를 통해 런타임에 재구성된 기본 제공 편집기를 포함합니다. 이들은 비즈니스 객체 옆의 플랫폼 프로젝트에 있으므로 비즈니스 객체를 읽는 사람은 이를 만나지 않습니다.버전 게이트 마이그레이션 — 업데이터의
CurrentDBVersion < new Version(…)블록. 각 블록은 데이터베이스당 최대 한 번 실행되며, 현재 코드가 설명할 수 없는 데이터에 대한 유일한 설명입니다.모든 화면 및 로드되는 내용 — 아래 참조.
이것들은 모든 비즈니스 클래스를 읽은 에이전트가 여전히 애플리케이션에 대해 자신 있게 틀릴 수 있는 이유입니다:
이 화면을 열면 무엇이 실행되나요?
XAF 저장소의 어떤 것도 이에 답하지 않으며, 두 부분 모두 다른 이유로 누락되어 있습니다.
화면 자체는 어떤 파일에도 없습니다. XAF는 모든 비즈니스 클래스에 대해 목록, 상세 및 조회 뷰를 생성하고, 모든 컬렉션에 대해 목록 뷰를 생성하며, 모델 편집기는 누군가 변경한 것만 저장합니다. 소스에서 Patient_Prescriptions_ListView를 검색하면 아무것도 찾을 수 없습니다. 그리고 그것이 없다는 증거는 아닙니다.
어떤 컨트롤러가 실행되는지는 런타임에 결정되며, XAF가 AND 연산하는 네 가지 조건(중첩, 뷰 타입, 객체 타입 및 뷰 ID)에 의해 결정됩니다. 각 조건은 설정되지 않으면 제한이 없으므로, 아무것도 설정하지 않은 컨트롤러는 여러분이 가진 모든 화면에 로드됩니다.
이 도구는 ViewController.IsFitToView가 평가하는 방식대로 네 가지를 모두 읽고, 프레임워크 자체 ID 생성기에서 구축된 뷰 인벤토리에 대해 평가하며, 각각이 일치한 이유를 기록하여 답을 신뢰하기보다 확인할 수 있도록 합니다:
두 계층이 분리되어 있습니다. 팀이 작성한 것은 전체 처리를 받고, XAF가 제공하는 것은 한 줄 뒤에 접혀 있습니다. 그 양이 많고 변경할 수 있는 것이 아니기 때문입니다. 실측 카탈로그를 사용하면 이름도 지정됩니다. 실제로 등록한 모듈로 범위가 지정되므로 WinForms 컨트롤러가 Blazor 화면에 나타나지 않습니다.
주장하지 않는 것: 여기에 나열된 컨트롤러는 Active["reason"]을 통해 자체적으로 비활성화될 수 있으며, 이는 데이터와 사용자에 따라 다릅니다. 이것은 XAF가 화면에 로드하는 것이지, 반드시 무언가를 할 것이라는 의미는 아닙니다. 그리고 소스에서 읽을 수 없는 것은 조용히 "모든 곳에서 실행"으로 처리되는 대신 이유와 함께 별도로 나열됩니다.
빠른 시작
dotnet tool install -g XafLogicExplainer.Cli
xaflogic agents --project "C:\MySolution\MyApp.Module"그러면 솔루션 루트에 AGENTS.md, CLAUDE.md 및 .github/copilot-instructions.md가 작성됩니다. 계정, API 키, 서버가 필요 없습니다. 다음 질문부터 에이전트가 애플리케이션을 이해합니다.
작성되는 내용과 두 개로 분할된 이유
AGENTS.md는 저장소에서 에이전트가 하는 모든 요청 앞에 추가되므로, 그 비용은 영원히 지불됩니다. 70KB의 엔티티 세부 정보를 거기에 덤프하면 실제 질문이 밀려날 것입니다. 따라서 출력은 계층화됩니다:
| ~11 KB | 항상 로드됨: 기본 규칙, 전체 인벤토리, 규칙, 레시피 |
| ~70 KB | 필요 시 열림: 전체 속성, 핸들러 코드, 규칙 메시지, |
가장 가치 있는 부분은 가장 작습니다. AGENTS.md는 기본 규칙으로 시작합니다. 이 애플리케이션이 XPO를 사용하고 EF Core를 절대 사용하지 않는다는 것, 인벤토리가 완전하므로 없는 것은 진정으로 존재하지 않는다는 것, 일부 동작이 C#이 아닌 모델 편집기에 있다는 것 등입니다. 이 몇 문단이 에이전트가 익숙하지 않은 XAF 코드베이스에 대해 자신 있게 지어내는 대부분의 발상을 막습니다.
기존 파일은 절대 덮어쓰지 않습니다. 생성된 텍스트는 마커 사이에 있으며, 수동으로 작성한 내용은 보존되고, 아무것도 변경되지 않으면 재생성 시 바이트가 동일합니다.
또는 에이전트가 직접 질문하도록 하세요
생성된 파일은 스냅샷입니다. MCP 서버는 라이브 연결입니다. 에이전트가 작업하는 동안 애플리케이션을 쿼리하며, 오래될 수 없습니다.
/plugin marketplace add peopleworks/XAFLogicExplainer
/plugin install xaf-logic-explainer@peopleworks-xaf그러면 한 번에 스킬과 MCP 서버를 설치합니다. 다른 MCP 클라이언트의 경우, 설치 없이 NuGet에서 직접 실행하거나:
{
"mcpServers": {
"xaf": { "command": "dnx", "args": ["XafLogicExplainer.Mcp", "--yes"] }
}
}…또는 이미 CLI가 있다면 가리키기만 하면 됩니다:
{ "mcpServers": { "xaf": { "command": "xaflogic", "args": ["mcp"] } } }솔루션 디렉토리에서 시작하면 자체적으로 XAF 모듈을 찾으므로, 어떤 형태도 경로가 필요하지 않습니다.
도구 | 설명 |
| 이 애플리케이션이 무엇이며, 그 안에 있는 모든 항목의 전체 목록 |
| 필드, 개념 또는 비즈니스 용어가 정의된 위치 |
| 하나의 엔티티에 대한 모든 속성, 관계, 규칙 및 계산 |
| 액션이 수행하는 작업 — 실행될 때 실행되는 C# 코드 포함 |
| 애플리케이션이 검증, 계산, 숨기기 및 비활성화하는 항목 |
| C# 파일에는 없는 모델 편집기 사용자 정의 |
| 사용자 정의 편집기, 필요한 JavaScript, 런타임에 변경된 기본 제공 편집기 |
| 라이브 데이터베이스에 대해 한 번 실행된 항목과 이유를 설명하는 주석 |
| 하나의 화면에 로드된 모든 것 — 활성화되는 컨트롤러와 그 이유 |
| 소스 다시 읽기 (변경 사항은 자동으로 감지됨) |
거기에 없는 것을 요청하면 답변은 유용한 것으로 제공됩니다:
이 애플리케이션에는 'PurchaseOrder'라는 엔티티가 없습니다. 다음은 전체 소스 트리에서 추출한 19개 엔티티의 전체 목록입니다: … 사용자가 'PurchaseOrder'가 존재할 것으로 예상한다면, 아직 생성되지 않은 것입니다.
공식 DevExpress 스킬과 함께 사용하세요. /plugin install dx-xaf@DevExpress-agent-skills
는 XAF의 작동 방식을 가르칩니다. 이것은 애플리케이션이 수행하는 작업을 가르칩니다. 첫 번째 스킬만 가진 에이전트는 없는 엔티티에 대해 올바른 XAF를 작성할 것입니다.
사람을 위한 동일한 지식
에이전트는 AGENTS.md를 읽거나 MCP 서버를 쿼리합니다. 10년 된 XAF 애플리케이션을 인수받은 사람은 동일한 사실을 매우 다르게 배열해야 합니다:
xaflogic explain --project "C:\MySolution\MyApp.Module" --open하나의 HTML 파일입니다. 서버, 빌드 단계, 네트워크 요청이 없습니다 — 인터넷이 없는 컴퓨터에서 이메일 첨부 파일로 열리며, 이것이 실제로 업무 인수가 이루어지는 방식입니다.
코드베이스 전체에 흩어져 있는 연결 속성으로부터 도메인 모델의 지도를 그립니다. 대부분의 팀은 자신의 것을 본 적이 없습니다: 한 사람의 머릿속에 존재하며, 그 사람이 떠날 때 사라지는 지식입니다.

이 리포지토리의 샘플 애플리케이션에서 실제 출력입니다. 엔티티 위에 마우스를 올리면 닿지 않는 모든 것이 흐려지고, 보라색은 부모 삭제 시 자식도 삭제됨을 의미합니다.
이와 함께: 각 엔티티와 각 속성의 설명, 실행되는 코드가 포함된 모든 액션, 사용자가 실제로 볼 메시지가 포함된 유효성 검사, 그리고 어떤 C# 파일에도 없는 모델 편집기 설정이 제공됩니다.
그리고 애플리케이션의 모든 기준 표현식의 색인 — SQL도 C#도 아닌 방언으로, 소스 전체에 흩어져 있고 다른 곳에서는 수집되지 않는 특성에서 수집됩니다:
자체 코드를 건드리지 않고 샘플에서 시도해보세요:
xaflogic explain --project tests/XafLogicExplainer.Tests/Fixtures/DemoSolution/PharmacyDemo.Module --open선택 사항: 코드와 DevExpress 코드 구분하기
추출은 작성된 프레임워크에 대해 아무것도 모르고 소스를 읽으므로 한 가지 질문에 답할 수 없습니다: DeleteObjectsViewController는 팀이 작성한 것인가요, 아니면 DevExpress에서 제공하는 것인가요? 답이 없으면 생성된 문서는 프레임워크 동작과 자체 로직을 동일한 것으로 제시합니다.
DevExpress 라이선스가 있는 경우:
xaflogic catalog build이것은 자체 설치 환경을 읽고 XAF 자체가 제공하는 것(속성, 컨트롤러, 모델 인터페이스 및 모듈)을 공식 요약 및 DevExpress에서 제공하는 문서 링크와 함께 기록합니다. DevExpress 26.1에서는 약 850개의 프레임워크 유형입니다.
DevExpress 소스 코드 구성 요소도 설치한 경우, 각 프레임워크 컨트롤러가 활성화되는 위치를 기록합니다 — XAF가 실행 전에 확인하는 네 가지 조건입니다. 이것은 어셈블리에서 읽을 수 없습니다: 다섯 개 중 네 개의 기본 제공 컨트롤러는 생성자 내에서 대상을 설정합니다. 어셈블리 옆에 없는 경우 --dx-sources <Components/Sources>를 전달하세요.
그러면 추출이 자동으로 이를 인식하여 그렇지 않으면 말할 수 없는 내용을 말할 수 있습니다:
"
ArchiveController는 기본 제공DeleteObjectsViewController를 확장합니다" — 기능을 추가하는 것이 아니라 애플리케이션 전체에서 삭제 작동 방식을 변경하는 것입니다."
[AuditedByFinance]는 XAF 또는 .NET 특성이 아닙니다" — 팀이 발명했으므로 그 의미는 이 코드베이스에만 존재하며 문서 어디에도 없습니다."32개의 프레임워크 컨트롤러도 이 화면에 로드됩니다" — 이름이 지정되고 각각 수행하는 작업이 포함되며, 애플리케이션이 실제로 등록하는 모듈로 범위가 지정되어 WinForms 컨트롤러가 Blazor 화면에 나타나지 않습니다.
카탈로그는 ~/.xaflogic/catalog/에 작성되며, 절대 리포지토리에 저장되지 않습니다: 라이선스 소프트웨어에서 파생되었습니다. 카탈로그 없이도 모든 것이 작동합니다 — 출력만 더 선명해집니다. NOTICE.md를 참조하세요.
명령어
명령어 | 기능 |
| 에이전트를 위한 |
| MCP 서버로 실행하여 에이전트가 애플리케이션을 실시간으로 쿼리할 수 있도록 함 |
| 애플리케이션을 사람에게 설명하는 자체 포함 HTML 페이지 작성 |
| DevExpress 기준 진실 카탈로그 구축 ( |
| 프로젝트를 읽고 로컬에 Markdown + JSON 작성 |
| 이전 추출과 비교하여 변경된 사항 보고 |
| 변경 감지 해시 표시 및 재추출 필요 여부 표시 |
| 파일 변경 시 디바운스로 재추출 |
| 추출 후 원격 대상에 게시 |
| 추출된 프로젝트에 대한 질문 |
|
|
| 여러 XAF 프로젝트 관리; 대부분의 명령어는 |
문서는 영어 또는 스페인어로 생성됩니다 (--lang en|es).
유용한 플래그: --orm auto|XPO|efcore, --lang en|es, --enrich (컨트롤러 및 액션별 AI 생성 비즈니스 로직 요약), --force, --all.
--enrich에는 모델이 필요하며, 다음 중 하나면 충분합니다 — 명령줄의 키가 우선하고, 그 다음 환경 변수, 마지막으로 사용 가능한 PeopleWorks Copilot 계정이 있습니다:
xaflogic extract --enrich --api-key sk-... # or any OpenAI-compatible endpoint:
xaflogic extract --enrich --api-key ... --ai-base-url http://localhost:11434/v1 --ai-model qwen2.5-coder
export OPENAI_API_KEY=sk-... # picked up with no configuration at all
export ANTHROPIC_API_KEY=sk-ant-...이 도구의 다른 모든 기능은 키, 계정, 네트워크 없이 실행됩니다.
추출은 증분적입니다 — .cs 및 .xafml 파일에 대한 SHA-256으로 변경되지 않은 프로젝트는 아무 작업도 수행하지 않습니다. 빌드 시 실행하려면 MSBuild .targets 파일이 있습니다.
상태
v0.14.0. 추출 엔진은 성숙한 부분입니다: 실제 XAF 애플리케이션에서 프로덕션 환경에서 실행됩니다. 에이전트 지향 인터페이스는 지금 공개적으로 출시되고 있습니다.
✅ | Roslyn 추출 — 엔티티, 컨트롤러, 규칙, 업데이터, 탐색, |
✅ | XPO 및 EF Core, 자동 감지 |
✅ | 사용자 정의 속성 및 목록 편집기, 해당 클라이언트 자산, 런타임에 재구성된 기본 제공 편집기 |
✅ | 버전별 데이터 마이그레이션 — 새 데이터베이스가 아닌 데이터베이스에 적용된 사항 |
✅ | 증분 변경 감지, 차이 보고서, 다중 프로젝트, 감시 모드 |
✅ | 컨트롤러 및 액션의 AI 강화 ( |
✅ | Blazor 인앱 도움말 패널 |
✅ |
|
✅ |
|
✅ | 플러그 가능한 게시 대상 ( |
✅ | MCP 서버 — 10개 도구, 소스에 대해 실시간 실행 |
✅ | 설치 가능한 Claude Code 플러그인 (스킬 및 MCP 서버 포함) |
✅ | 345개 테스트 (합성 XPO 및 EF Core 픽스처 대상) — DevExpress 필요 없음 |
✅ | DevExpress 기준 진실 카탈로그, 라이선스 보유자가 로컬에서 생성 |
이 도구가 성장한 PeopleWorks Copilot은 이제 모든 것이 중심으로 구축된 대상이 아니라 여러 대상 중 하나입니다. 가장 중요한 출력은 서버가 전혀 필요하지 않습니다.
긴 버전
XAF 애플리케이션 동작의 3분의 1이 비즈니스 클래스 외부에 존재하는 이유, 숨겨진 네 곳, 추출된 출력의 실제 모양:
각각은 서로 번역된 것이 아니라 각 언어로 작성되었습니다. 소스는 docs/Blog/에 있습니다.
리포지토리 구조
src/
XafLogicExplainer.Core Roslyn extraction engine — no DevExpress reference
XafLogicExplainer.Mcp MCP server (ModelContextProtocol 2.1)
XafLogicExplainer.Cli the `xaflogic` command
XafLogicExplainer.CopilotSync PeopleWorks Copilot target + AI enrichment
XafLogicExplainer.DescriptionAnnotator generates missing [Description] attributes
XafLogicExplainer.Blazor in-app help panel for XAF Blazor apps
plugins/
xaf-logic-explainer the installable Claude Code plugin.NET 10 기반으로 빌드되었습니다.
XafLogicExplainer.Blazor만 DevExpress 패키지를 참조합니다. 빌드하려면 DevExpress NuGet 피드와 라이선스가 필요합니다. 다른 모든 것은 어디서든 빌드되므로 CI가 무료로 확인할 수 있습니다.
기여하기
가장 가치 있는 기여는 추출기가 놓친 부분을 알려주는 것입니다. XAF는 방대하며, 각 코드베이스는 다른 부분을 사용하고 있으며, 단일 프로젝트가 전체 프레임워크를 실행하지는 않습니다. 이를 위한 추출-격차 이슈 템플릿이 있습니다: 프로젝트에서 사용하는 XAF 패턴과 도구가 감지하지 못한 것을 보여주세요.
CONTRIBUTING.md를 참조하세요. 버그 보고서, 문서 및 번역 모두 환영합니다.
라이선스
MIT. DevExpress와의 관계는 NOTICE.md를 참조하세요.
독립적인 커뮤니티 프로젝트입니다 — Developer Express Inc.와 제휴하거나 보증 또는 지원을 받지 않습니다. DevExpress 소스 코드를 포함하지 않으며 빌드나 실행에 DevExpress 라이선스가 필요하지 않습니다. DevExpress, XAF, eXpressApp Framework는 Developer Express Inc.의 상표입니다.
Pedro Hernández (PeopleWorks), Microsoft MVP for .NET — DevExpress 및 XAF 커뮤니티를 위해 제작되었습니다.
Available Tools
12 toolsxaf_controllerA
Full detail of one controller: which views it applies to, every action it defines with the actual C# that runs when the action fires, and its helper methods. Use when asked what a button or command actually does.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Controller class name, e.g. 'ApproveInvoiceController'. Case-insensitive. | |
| project | No | Project name, when several are configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It describes the output contents (views, actions, C# code, helper methods) but does not explicitly state that it is read-only or non-destructive, nor does it mention any side effects or limitations. It is informative but not exhaustive.
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 concise (two sentences), front-loaded with the core purpose, and every sentence adds value. There is no redundancy or unnecessary detail.
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?
With no output schema or annotations, the description carries the load of explaining what is returned. It does so by listing the key content areas (views, actions with C# code, helper methods). It could be slightly more detailed about response format, but it is adequate for an agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters (name and project) with 100% coverage. The tool description adds little beyond implying that 'name' identifies the controller. Baseline of 3 is appropriate given the high schema coverage.
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 resource (one controller) and exactly what it returns: views, actions with actual C# code, and helper methods. It distinguishes itself from siblings like xaf_search and xaf_overview by focusing on deep controller internals.
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 an explicit use case: 'Use when asked what a button or command actually does.' This gives clear context for when to use the tool, though it does not mention alternatives 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.
xaf_editorsA
Custom property and list editors this application defines, and built-in editors its controllers reconfigure at run time. IMPORTANT — a property rendered by one of these does NOT show the control its type implies, and the business class says nothing about it. Check this before describing or changing how anything appears on screen.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name, when several are configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It prominently discloses a non-obvious behavioral trait: properties rendered by these editors do not show the control their type implies, and the business class gives no indication. This adds valuable context beyond a simple resource listing.
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: the first defines the scope of editors, and the second delivers an important caveat in caps. Every sentence earns its place, with no filler or 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 simple optional parameter and the absence of an output schema and annotations, the description covers the key behavioral trap and defines what types of editors are included. It could explicitly state what the tool returns (e.g., a list of editor names or settings), but the critical warning makes it sufficiently complete for likely use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the sole optional 'project' parameter with a clear description, so the baseline is 3. The tool description adds no additional context about how this parameter affects results, but it does not need to because the schema already covers it completely.
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 identifies the tool's focus on custom property/list editors and reconfigured built-in editors, which distinguishes it from siblings like xaf_controller and xaf_model. However, it lacks an explicit action verb such as 'list' or 'get', relying on the resource name to imply the tool's function.
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 to consult this tool before describing or changing UI appearance, and highlights a critical caveat about misleading assumptions. It does not mention alternative tools or when not to use it, so it stops short of offering full decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xaf_entityA
Full detail of one business entity: every property with its type and attributes, relationships to other entities, validation rules, appearance rules, and calculated property expressions. Use before writing or changing any code that touches an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Entity class name, e.g. 'Invoice'. Case-insensitive. | |
| project | No | Project name, when several are configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of indicating the tool's behavior. It discloses the full detail returned and implicitly signals a read-only operation via 'Use before writing or changing'. However, it does not explicitly state side effects or permissions, though likely unnecessary for this context.
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 sentences, front-loaded with a clear definition of what the tool does, followed by a concise usage directive. No filler.
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?
Despite lacking an output schema, the description thoroughly enumerates the return content and provides a clear usage context. It is sufficient for an agent to know when and how to use this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage, including type and description for each parameter. The description adds no additional parameter-level guidance, so the baseline of 3 applies.
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 returns full detail of a single business entity, enumerating the categories of information included. This is specific and distinguishes it from sibling tools like xaf_search or xaf_overview, which likely provide broader or partial views.
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 to use this tool before writing or changing code that touches an entity, which establishes a clear 'when to use' context. However, it does not explicitly name alternative tools or state when not to use it, so it falls short of full differentiation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xaf_migrationsA
Updater blocks that ran once when an existing database was upgraded past a version, and never again. Use when asked why a column contains what it contains, where legacy data came from, or what changed between releases — the code running today cannot explain any of that, and reasoning from it produces a plausible wrong answer.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name, when several are configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It clearly states these blocks ran once and never again, establishing a read-only historical nature, and the caution about current code adds interpretive context. It does not mention output format, but that is less critical.
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 sentences: the first defines the resource, the second provides usage guidance. The wording is slightly dense but efficient, with no wasted words or 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?
For a tool with one optional parameter and no output schema, the description adequately covers purpose, usage, and behavioral context. It does not describe return values, but the use cases make clear the tool returns historical migration information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'project' is already fully described in the schema (100% coverage), and the description adds no additional parameter-level details. This matches the baseline of 3 when the schema handles the semantics.
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 identifies the resource as updater blocks that ran once during database upgrades, which clearly distinguishes it from sibling tools about current code. It lacks an explicit verb like 'list' or 'show', but the noun phrase and usage guidance communicate its role as a historical reference.
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 when to use: when asked about column origins, legacy data provenance, or changes between releases. It also warns against reasoning from current code because it produces plausible wrong answers, effectively guiding the agent away from inappropriate alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xaf_modelB
Model Editor (.xafml) customizations: captions, list and detail view settings, columns, filters and application options. IMPORTANT — this behavior exists only in XML and cannot be inferred from the C# at all, so check it before concluding how a screen behaves.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name, when several are configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that behavior is XML-defined and cannot be inferred from C#—a valuable insight. However, it doesn't state whether the tool reads or writes, what side effects occur, or what output to expect. This ambiguity is significant for a tool with 'customizations' in its scope.
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: the first lists the tool's scope compactly, the second provides a crucial caveat. It is front-loaded with the domain and keeps the warning high-priority. No wasted words or redundant structure.
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?
This tool operates in a complex domain (XAF model customization) with no output schema and no annotations. The description tells you what the tool covers but not what it returns, whether it mutates state, or how it relates to the many sibling tools. The XML caveat is helpful but insufficient for confident use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'project' is already fully described in the schema ('Project name, when several are configured.'). Since schema coverage is 100%, the description adds no new semantic value, and the baseline of 3 applies. No extra usage details are given for the 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 identifies the resource (Model Editor .xafml customizations) and enumerates specific content areas (captions, list/detail views, columns, filters, app options). However, the verb is implicit ('customizations' rather than 'get' or 'edit'), so it doesn't crisply state the action. It does distinguish itself from sibling tools by focusing on .xafml model behavior.
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 'IMPORTANT' statement gives a clear directive: check this tool before concluding how a screen behaves because behavior exists in XML, not C#. This implies when to use it, but it doesn't explicitly name alternatives or exclusions. Still, the usage context is strong enough to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xaf_overviewA
What this XAF application is and everything it contains: ORM, module setup, and the COMPLETE list of entities, controllers, actions and navigation groups. Call this first when asked anything about the application as a whole. The lists are exhaustive: if something is not in them, it does not exist in this application.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name, when several are configured. Omit for the default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It does disclose a key behavioral trait—that the lists are exhaustive and authoritative—which is valuable. However, it does not mention other behavioral aspects such as performance implications, response format, or whether it reads from a cache or scans files, leaving some transparency gaps.
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 concise sentences. The first sentence encapsulates the tool's content, and the second provides usage and behavioral guidance. There is no redundant or filler text, making it well-structured and efficient.
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 an overview tool with no output schema, the description provides a solid sense of what the response will contain (complete lists of key components). It stops short of detailing the exact result format or organization, but the content scope is clear enough for the agent to infer what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single 'project' parameter with a clear description, so schema coverage is 100%. The tool description adds no additional parameter semantics, so it does not go beyond the schema baseline.
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 defines the tool as an overview of the entire XAF application, listing ORM, module setup, and exhaustive enumerations of entities, controllers, actions, and navigation groups. It distinguishes itself from sibling tools by emphasizing it is the complete index and should be called first for whole-app questions.
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 'Call this first when asked anything about the application as a whole', giving a direct usage trigger. It also implies the tool serves as a definitive existence check ('if something is not in them, it does not exist'), which guides when to rely on its results versus diving into specific sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xaf_refreshA
Discard cached analysis and re-read the source on the next query. The server already detects file changes automatically, so this is only needed if you believe the cached view is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name, or omit to refresh all configured projects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It discloses the cache-discarding behavior, the deferred effect ('on the next query'), and the caveat about automatic file change detection. It omits details about side effects or permissions, but for a cache refresh tool, the description is fairly transparent.
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 tight sentences: first states the action, second gives the usage condition. No filler or repetition.
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?
Low complexity (one optional param, no output schema). The description tells what happens, when to use it, and why it exists. Fully adequate for an AI agent to decide and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description covers 100% of the single parameter, giving the project name and its optionality. The tool description does not add parameter-specific meaning, but the baseline of 3 applies since schema already documents the parameter well.
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?
States a clear action ('Discard cached analysis and re-read the source') on a specific resource (the analysis cache). This clearly distinguishes it from sibling xaf_* tools, which focus on searching, overviews, entities, etc.
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 tells when to use: 'only needed if you believe the cached view is wrong,' and provides context that the server auto-detects changes, implying regular use is unnecessary. This is direct when-to-use guidance with an implicit alternative (do nothing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xaf_reportsA
Reports the application registers in source: what each is over, the filter and expressions in its layout, and the parameters dialog it opens with. Use when asked what a report shows, why its numbers differ from a screen's, or before writing a new one. Says explicitly when the list is a lower bound because users can also design reports at run time.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name, when several are configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It adds a key limitation: 'Says explicitly when the list is a lower bound because users can also design reports at run time.' This is extra behavioral context beyond the raw purpose. It does not mention side effects or auth, but the tool is clearly read-only in nature.
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 with no wasted words. Purpose is front-loaded, usage is provided, and the limitation is appended concisely. Efficient and well-structured.
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 simple tool with one optional parameter and no output schema, the description covers what the tool returns, when to use it, and a caveat about completeness. Nothing essential is missing for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, so the schema already documents the 'project' parameter. The description adds no additional parameter-specific guidance, matching the baseline for high coverage.
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 states a specific verb and resource: 'Reports the application registers in source' and details what it covers (what each report is over, filter/expressions, parameters dialog). This clearly distinguishes it from sibling tools like xaf_search or xaf_entity, even without naming them.
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 when to use: 'Use when asked what a report shows, why its numbers differ from a screen's, or before writing a new one.' However, it does not mention when not to use it or name alternative tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xaf_rulesA
The business rules the application enforces: validation rules with their messages and conditions, conditional appearance rules, and calculated properties. Use when asked what the system requires, forbids, or computes. Optionally narrowed to one entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | No | Restrict to one entity. Omit for every rule in the application. | |
| project | No | Project name, when several are configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It details what the tool returns (validation rules with messages, conditions, appearance rules, calculated properties) and implies a read-only query. It does not explicitly state side effects or return format, but the level of detail is strong.
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 only three sentences and every sentence serves a distinct purpose: defining the resource, specifying when to use it, and explaining parameter narrowing. It is front-loaded with the most important information and contains no filler.
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 two-parameter tool with no output schema, the description adequately captures content, usage, and parameter filtering. It does not mention empty responses or error handling, but that is not critical for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both parameters fully described in the input schema. The description adds a small reiteration for 'entity' ('narrowed to one entity') but does not need to compensate for any schema gaps, so the baseline of 3 applies.
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 what the tool does: it returns the business rules the application enforces, specifically enumerating validation rules with messages and conditions, conditional appearance rules, and calculated properties. This goes beyond a generic resource name and effectively distinguishes the tool from sibling tools like xaf_model or xaf_entity.
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 explicitly says 'Use when asked what the system requires, forbids, or computes,' providing a clear when-to-use directive. It also notes optional narrowing by entity, which adds practical usage guidance beyond the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xaf_searchA
Search the whole application for a term: entity and property names, controllers, actions, validation messages, criteria expressions and seed data. Use when you know roughly what you are looking for but not where it lives — for example a field name mentioned by the user, or a business concept like 'discount'. Returns what matched and where.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Optional filter: entity, property, controller, action, rule, or seed. | |
| query | Yes | Text to look for. Case-insensitive, matches substrings. | |
| project | No | Project name, when several are configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses what is searched (entity names, validation messages, etc.), that it is case-insensitive, and that it returns what matched and where. It does not state side effects or permissions, but as a search tool, the read-only nature is implied and adequately covered.
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 sentences, each earning its place. Front-loaded with the verb 'Search', followed by scope and usage context, with no redundancy or fluff.
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 complete for a simple search tool. It covers purpose, usage, and return behavior, and no output schema means it needn't explain return structure beyond what is stated.
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% with clear descriptions for each parameter. The tool description reinforces the 'kind' parameter by listing examples (entity, property, controller, etc.) and gives a concrete query example, but it adds minimal new information beyond the 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 opens with 'Search the whole application for a term' which clearly states the verb and scope. It enumerates specific resource types (entity, property, controllers, actions, etc.), distinguishing it from sibling tools like xaf_entity or xaf_controller.
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?
It explicitly says 'Use when you know roughly what you are looking for but not where it lives' and provides an example. It gives clear context but does not mention exclusions or alternative tools, falling short of a fully explicit when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xaf_viewA
What is loaded when a screen opens: every controller XAF activates on that view, why each one matches, and which of their actions appear. Call with no view to list the application's screens. IMPORTANT — most views exist in no file at all; XAF generates them from the business classes, so neither the C# nor the .xafml can be read to find them. Use before changing a controller, adding an action, or answering what a screen does.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | View id, e.g. 'Order_ListView'. Omit to list every view. Case-insensitive. | |
| project | No | Project name, when several are configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses the critical fact that most views are generated from business classes and not present in C# or .xafml files, preventing the agent from mistakenly reading files. It also reveals that omitting the view returns a screen list, a behavioral trait not visible from the schema.
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 that front-load the core definition, then add an important caveat, then provide usage context. Every sentence contributes new information with no filler or repetition of schema details.
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 no output schema and no annotations, the description gives a complete picture: what data the tool returns (controllers, actions, match reasons), how to invoke it (with or without a view), a critical gotcha about generated views, and concrete use cases. This is sufficient for an agent to correctly select and call the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents both parameters (view, project) with 100% coverage, including default null and case-insensitivity. The description reinforces the view parameter's behavior by explaining the effect of omitting it (list all screens) but adds no new meaning for the project parameter. This meets the baseline for high schema coverage without major additional semantic value.
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 defines the tool as showing what controllers and actions are loaded for a screen, with a specific resource (view) and detailed output (why each matches, which actions appear). It also explains the no-view invocation to list all application screens, distinguishing it from sibling tools like xaf_controller or xaf_model. This goes beyond a vague verb to explain the exact output scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit use cases: 'Use before changing a controller, adding an action, or answering what a screen does.' It also explains the no-view pattern to list screens. However, it does not name alternative tools or specify when not to use it, so it's strong but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xaf_walkthroughA
Trace one business process end to end: what runs, in what order, which entities it touches and which rules govern them, every step citing file and line. Start from an action, a controller method, a controller or an entity. Use this when asked HOW something works — 'how does approval work', 'what happens when I press this' — rather than what exists. Calls the trace could not follow are reported explicitly, so an empty list of them means the path really is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | Where to start: an action, a controller method, a controller or an entity. | |
| depth | No | How many hops to follow. Three covers an ordinary XAF process. | |
| project | No | Project name, when several are configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes the full burden of behavioral disclosure. It successfully discloses a important limitation: calls the trace cannot follow are reported explicitly, and an empty list has a meaningful interpretation. It does not explicitly state whether the tool is side-effect free, but the read-only affordance of a trace is strongly implied.
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 dense sentences with no filler. It opens with a concise definition of the tool, then quickly gives usage criteria, and ends with an important nuance about the completeness of the path.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex exploration/walkthrough tool with no output schema and no annotations, the description covers the needed invocation context: starting points, scope, traversal boundaries, citation by file and line, and interpretation of missing-boundary results. It gives enough structure for an agent to know both when and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all three parameters with descriptions, so schema coverage is 100%; the baseline is 3. The description only reinforces the required 'from' parameter's valid starting points without adding behavior or details about 'depth' or 'project' beyond the 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 states a specific action—'Trace e one business process end to end'—and specifies what the trace covers: what runs, execution order, touched entities, and governing rules. The phrase 'rather than what exists' distills the tool from sibling existence/search tools, so selected against and invocation are unambiguous.
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?
It explicitly says to use this path 'when asked HOW something works' and gives concrete examples like 'how does approval work' and 'what happens when I press this'. It also contrasts it with what-exists questions, giving an explicit when-to-use and when-not-to-use distinction.
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 tool update
v0.16.0- Added
xaf_reports
1 tool update
v0.15.0- Added
xaf_walkthrough
1 tool update
v0.12.1- Added
xaf_view
9 tool updates
v1.0.0- First observed
xaf_controller - First observed
xaf_editors - First observed
xaf_entity - First observed
xaf_migrations - First observed
xaf_model - First observed
xaf_overview - First observed
xaf_refresh - First observed
xaf_rules - First observed
xaf_search
TDQS
Scored across 12 tools
Each tool targets a distinct source of truth (overview, entity, view, controller, model, editors, rules, reports, migrations, search, trace). A couple of adjacent tools (xaf_entity vs xaf_rules, xaf_view vs xaf_model) cover overlapping facts, but the use-case guidance clearly separates them.
All tools share a uniform `xaf_` prefix followed by a short, descriptive noun/verb, so the family is instantly recognizable. `xaf_refresh` is the only imperatively named tool, but this is a deliberate and predictable exception for a cache-control function.
Twelve tools is within the ideal range and each tool addresses a distinct aspect of explaining an XAF application. The count feels intentional rather than padded; there is no obvious redundancy or token-for-count inflation.
The surface covers static structure (overview, entities, views, model, editors), dynamic behavior (controllers, walkthrough, rules), historical data (migrations), and search/reporting (search, reports), plus a cache refresh for correctness. No essential operation for the stated explainer purpose is missing.
Maintenance
Related MCP Connectors
Give your AI agent a persistent map of your project's structure, dependencies, and bugs.
AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Shared memory for coding agents. Stop re-explaining your codebase every session.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI-assisted X++ development for Dynamics 365 Finance and Operations by pre-indexing the entire codebase and providing 54 specialized tools for metadata lookup, code generation, and best practice validation.20174 npm157MIT
- AlicenseAqualityDmaintenanceCode context for AI coding agents. Progressive, on-demand access to your internal .NET / NuGet package source — agents browse, search, and read private C# libraries autonomously, with zero workspace pollution.233 npmMIT
- AlicenseAqualityCmaintenanceExtracts deterministic architecture maps from codebases for AI agents, enabling queries about blast radius, routes, security findings, and production readiness without sending code anywhere.6MIT
- AlicenseNot gradedqualityAmaintenanceProvides AI coding agents with ground truth about a Rails app via 45 read-only tools covering schema, models, routes, controllers, views, jobs, and conventions, working over MCP or CLI and functioning even when the app cannot boot.163MIT