mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-07 23:56:56 +01:00
- bc-mcp.agent.md-templaten fik en manglende "preload de tre bc_actions_* værktøjer via ToolSearch select:"-sektion, som ellers kun levede i bc-mcp-tools-must-be-preloaded.md og derfor aldrig blev håndhævet. - Rettet forkert antaget navnemønster (ListUpdate<entity>_PAG<id> -> Modify_<Entity>_PAG<id>, bekræftet empirisk via bc_actions_search). Ny regel bc-mcp-naming-convention-must-be-reverified.md kræver at navnekonventioner altid markeres som "forvent, reverificér" fremover. - francis.agent.md + immanuel.agent.md: hand-off fra Francis til Immanuel er nu eksplicit automatisk. Michael er ikke et mellemstop i pipelinen - han involveres først når PR'en er klar til merge. Observeret 2026-07-04: en session brugte ToolSearch med keyword-søgning i stedet for select: (fandt irrelevante værktøjer), ledte derefter efter et ListUpdate-værktøj der ikke findes, og spurgte om lov til at fortsætte til Immanuel midt i pipelinen.
61 lines
2.4 KiB
Markdown
61 lines
2.4 KiB
Markdown
---
|
|
bc-version: [all]
|
|
domain: mcp
|
|
keywords: [mcp, tools, naming, bc-actions-search, verification, bc]
|
|
technologies: [al]
|
|
countries: [w1]
|
|
application-area: [all]
|
|
---
|
|
---
|
|
rule: bc-mcp-naming-convention-must-be-reverified
|
|
title: BC MCP action-naming conventions must be reverified, not assumed
|
|
category: mcp
|
|
severity: required
|
|
---
|
|
|
|
# BC MCP action-naming conventions must be reverified, not assumed
|
|
|
|
## Description
|
|
|
|
Documentation describing the `businesscentral` MCP server's action-naming pattern
|
|
(`List_<Entity>_PAG<id>`, `Modify_<Entity>_PAG<id>`, `Create_<Entity>_PAG<id>`) must
|
|
state it as an **expectation to reverify per call with `bc_actions_search`**, never
|
|
as a guaranteed fact. The verb prefix is not uniform across every entity.
|
|
|
|
## Why
|
|
|
|
The `bc-mcp.agent.md` template asserted the modify-action name as `ListUpdate<entity>
|
|
_PAG<id>` as fact. The real action returned by `bc_actions_search` for updating
|
|
`projectRepositories` was `Modify_ProjectRepository_PAG6102904` - singular entity
|
|
name, `Modify_` prefix, not `ListUpdate`. An agent that trusts the documented pattern
|
|
without verifying hunts for a tool that does not exist, wasting a round trip exactly
|
|
like the one this rule replaces.
|
|
|
|
Meanwhile `Create_NewTask_PAG6102905` (used elsewhere in the same template) DOES
|
|
match the documented `Create_<entity>_PAG<id>` shape - so the pattern is a reasonable
|
|
starting guess, just not one to assert as fact without confirming it that call.
|
|
|
|
## What counts as a violation
|
|
|
|
- A BC MCP agent template states an action name or naming pattern as guaranteed,
|
|
without an instruction to confirm it via `bc_actions_search` before relying on it.
|
|
- An agent session assumes an action name from documentation and calls
|
|
`bc_actions_invoke` with it directly, without first getting the exact name from
|
|
`bc_actions_search` or `bc_actions_describe`.
|
|
|
|
## Correct pattern
|
|
|
|
1. bc_actions_search(SearchText: "<entity keywords>", SearchMode: keyword,
|
|
ActionType: [List|Modify|Create])
|
|
2. Use the exact name returned - do not construct it from a remembered pattern.
|
|
3. bc_actions_describe on that exact name before invoking it.
|
|
|
|
Documentation may state the *expected* shape as a memory aid, but must mark it
|
|
explicitly as unverified per-entity, e.g.: "expect `Modify_<Entity>_PAG<id>` -
|
|
reverify, do not assume."
|
|
|
|
## Scope
|
|
|
|
Applies to every BC MCP agent template and every session that calls
|
|
`bc_actions_search` / `bc_actions_describe` / `bc_actions_invoke` in any CURABIS
|
|
project.
|