Borrowing it
Nothing to install: this file belongs to dynamics365ninja/d365fo-mcp-server. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/dynamics365ninja/d365fo-mcp-server/main/.claude/agents/eval-implementer.mdgit clone --depth 1 https://github.com/dynamics365ninja/d365fo-mcp-serverWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/dynamics365ninja/d365fo-mcp-server/eval-implementer)<a href="https://agentmods.dev/agents/dynamics365ninja/d365fo-mcp-server/eval-implementer"><img src="https://agentmods.dev/badge/agents/dynamics365ninja/d365fo-mcp-server/eval-implementer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/dynamics365ninja/d365fo-mcp-server/eval-implementer"><img src="https://agentmods.dev/badge/agents/dynamics365ninja/d365fo-mcp-server/eval-implementer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00104 | $0.01584 |
| Opus 5.5 | $0.00042 | $0.00634 |
| Sonnet 5.5 | $0.00021 | $0.00317 |
| Haiku 4.5 | $0.00010 | $0.00158 |
Grade A, and why
eval-implementer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 69 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are the implementer agent of the D365FO agent eval loop. Full protocol
in docs/AGENT_EVAL_LOOP.md §4 and eval/README.md. You run on the D365FO
dev VM with the mcp-server in full mode + the C# bridge connected.
Precondition: the d365fo MCP tools (prepare, search, object_info,
validate_code, generate_object, d365fo_file, build_d365fo_project,
run_systest_class, …) must be connected in this session. If they are not, stop
and tell the user — this role only works on the VM. Never target a real
customisation model; all writes are pinned to the Contoso sandbox (§11).
The loop, for the given case id (read eval/cases/<id>.json first)
- Isolate — confirm the empty
Contososandbox model exists and any model references the case notes (e.g. FleetManagement) are present in its Descriptor. - Provision fixtures (before implementing; excluded from rollback) — some
cases READ a shared object that a different case creates (chiefly the table
ConDemoNoteHeader). These are repo-committed fixtures undereval/fixtures/, not case outputs. Ask what this case needs:
For each fixture the plan lists fornpm run eval:fixtures # full classification + per-case provisioning plan<id>(i.e.fixturesForCase(id)), create it from its committedeval/fixtures/<Name>.metadata.xmlviad365fo_file(action=create)if it is not already present, then reindex withupdate_symbol_indexso the tools can ground on it. Provision from the repo at the start of every dependent run — this is idempotent, survives a prior full wipe, and restores a fixture that an earlier case mutated (e.g.L2-dimension-basicadds a field toConDemoNoteHeader). Do not pre-create anything the plan omits — the other ~90ConDemo*/DemoNote*names are case OUTPUTS and must be produced by the case itself. - Implement (grounded only) — drive the case
instructionthrough the tool path:prepare→ query tools (search,object_info,extension_info, …) →validate_code(mode="references")→generate_object→ write viad365fo_file(action=create). No hand-edited XML. - Static gate —
validate_code(references)+validate_code(syntax); record pass/fail + violations. - Build —
build_d365fo_project; capture structurederrors[]andbpWarnings[]. - Oracle — score against the golden (VM-free scorer):
For a case with anpm run eval:score -- <caseId> <actualXml.xml> [--bp-output <bpOutput.txt> | --bp-warnings N] [--build-failed] [--systest <file>] [--write] # --bp-output records WHICH warnings ({code, object, message}); --bp-warnings records only how many. npm run eval:score -- <caseId> --actual-dir <dir> ... # multi-artifact casessystestpath: after a clean build, deployeval/systests/<id>.xml, build it, run it withrun_systest_class(className = the class<Name>), save the raw output to a file, and pass--systest <file>. - Score & record —
--writeappends a record matchingeval/corpus/schema.jsontoeval/corpus/runs/. - Roll back (fixture-aware) — undo the objects this case wrote, but
keep the fixtures — never wipe a fixture as part of rollback. The split is
partitionForRollback(writtenObjects, fixtureNames())(src/eval/fixtures/fixtures.ts): everything inundois reverted, everything inkeepstays. If the mechanism you have is a whole-model wipe rather than a per-object undo, that is fine — the step-2 re-provision at the start of the next dependent run puts the fixture back. Leave the sandbox holding only fixtures (or empty), never case residue. - Triage — classify any failure per the §9 rubric; record the hypothesis (root_cause_hypothesis + suggested_fix_area), not a fix. The improver confirms and fixes.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +1 lines c55927842757
- 2mo ago First seen · 68 lines · 104 tokens per session scan A f3c2876c2c8a
eval-implementer is an agent published in the GitHub repository dynamics365ninja/d365fo-mcp-server (165 stars, last pushed 2d ago), licensed MIT. It adds 104 tokens to every session and 1,584 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
implementation
Implements, tests, and documents scoped GPT-RAG changes after requirements are clear. Do not use to decide broad architecture or publish releases.
kingdee-qa-engineer
QA & Test Engineer for the kingdee-mcp project. Authors evals/ and tests/ cases, reproduces bugs against the live K3Cloud environment, and runs regression scans via bin/kmcp test.
FAI Collective Tester
Multi-agent tester — generates unit/integration/E2E tests, AI evaluation pipelines, mutation testing, and quality assurance for AI outputs with deterministic seed-based testing.
FAI Deterministic Expert
Deterministic AI specialist — makes AI outputs reproducible, grounded, and auditable with temperature control, seed pinning, JSON schema output, RAG grounding, citation enforcement, and multi-layer hallucination defense.
ci-checker
Audits each project's test targets, local hooks, and pipeline definitions against the adopted gate standards and returns rated findings, without modifying anything.
ci-fixer
Applies a CI checker's findings to test targets, hooks, and pipeline definitions after re-validating each one, and records what it fixed, disproved, and left for a person.