boondmanager-mcp-server 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +68 -3
  2. package/dist/config/access-policy.d.ts +5 -0
  3. package/dist/config/access-policy.d.ts.map +1 -1
  4. package/dist/config/access-policy.js +36 -1
  5. package/dist/config/access-policy.js.map +1 -1
  6. package/dist/config/env-flags.d.ts +11 -0
  7. package/dist/config/env-flags.d.ts.map +1 -0
  8. package/dist/config/env-flags.js +16 -0
  9. package/dist/config/env-flags.js.map +1 -0
  10. package/dist/config/profiles.d.ts +71 -0
  11. package/dist/config/profiles.d.ts.map +1 -0
  12. package/dist/config/profiles.js +115 -0
  13. package/dist/config/profiles.js.map +1 -0
  14. package/dist/icons.d.ts +79 -0
  15. package/dist/icons.d.ts.map +1 -0
  16. package/dist/icons.js +169 -0
  17. package/dist/icons.js.map +1 -0
  18. package/dist/resources/index.d.ts.map +1 -1
  19. package/dist/resources/index.js +6 -0
  20. package/dist/resources/index.js.map +1 -1
  21. package/dist/schemas/filter-aliases.d.ts +69 -0
  22. package/dist/schemas/filter-aliases.d.ts.map +1 -0
  23. package/dist/schemas/filter-aliases.js +225 -0
  24. package/dist/schemas/filter-aliases.js.map +1 -0
  25. package/dist/schemas/index.d.ts +22 -22
  26. package/dist/schemas/index.d.ts.map +1 -1
  27. package/dist/schemas/index.js +54 -43
  28. package/dist/schemas/index.js.map +1 -1
  29. package/dist/server.d.ts +18 -1
  30. package/dist/server.d.ts.map +1 -1
  31. package/dist/server.js +26 -3
  32. package/dist/server.js.map +1 -1
  33. package/dist/services/boond-client.d.ts.map +1 -1
  34. package/dist/services/boond-client.js +17 -2
  35. package/dist/services/boond-client.js.map +1 -1
  36. package/dist/tools/crud-factory.d.ts +0 -8
  37. package/dist/tools/crud-factory.d.ts.map +1 -1
  38. package/dist/tools/crud-factory.js +66 -14
  39. package/dist/tools/crud-factory.js.map +1 -1
  40. package/dist/tools/registration-decorators.d.ts +35 -0
  41. package/dist/tools/registration-decorators.d.ts.map +1 -0
  42. package/dist/tools/registration-decorators.js +30 -0
  43. package/dist/tools/registration-decorators.js.map +1 -0
  44. package/dist/tools/validation-wrapper.d.ts +43 -0
  45. package/dist/tools/validation-wrapper.d.ts.map +1 -0
  46. package/dist/tools/validation-wrapper.js +108 -0
  47. package/dist/tools/validation-wrapper.js.map +1 -0
  48. package/manifest.json +8 -1
  49. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"crud-factory.d.ts","sourceRoot":"","sources":["../../src/tools/crud-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud-factory.d.ts","sourceRoot":"","sources":["../../src/tools/crud-factory.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
1
2
  import { z } from "zod";
2
3
  import { apiRequest, apiSearch, buildSearchQuery, formatListResponse, formatDetailResponse, formatEntitySummary, } from "../services/boond-client.js";
3
4
  import { SearchSchema, IdSchema, IdTabSchema } from "../schemas/index.js";
5
+ import { isFeatureDisabled } from "../config/env-flags.js";
4
6
  // ---- Structured output schemas (MCP outputSchema / structuredContent) ----
5
7
  // Deliberately compact: the structured payload mirrors the text summary
6
8
  // (ids + one-line summaries, or the caller-selected `fields`), never the full
@@ -76,10 +78,7 @@ function entityRef(response) {
76
78
  // ---- Delete confirmation via MCP elicitation ----
77
79
  /** `BOOND_MCP_CONFIRM_DELETE=0|false|no|off` opts out of the confirmation prompt. */
78
80
  function deleteConfirmationDisabled() {
79
- const v = process.env.BOOND_MCP_CONFIRM_DELETE;
80
- if (!v)
81
- return false;
82
- return ["0", "false", "no", "off"].includes(v.trim().toLowerCase());
81
+ return isFeatureDisabled(process.env.BOOND_MCP_CONFIRM_DELETE);
83
82
  }
84
83
  /**
85
84
  * Ask the end user to confirm a destructive delete through MCP elicitation
@@ -87,8 +86,45 @@ function deleteConfirmationDisabled() {
87
86
  * keep the legacy behaviour (delete proceeds — `destructiveHint` already lets
88
87
  * hosts gate the call). A failed elicitation round-trip (e.g. stateless HTTP
89
88
  * quirks) also falls back to legacy rather than breaking deletes; only an
90
- * explicit decline/cancel/`confirm=false` aborts.
89
+ * explicit decline/cancel, or an answer that isn't "delete", aborts.
90
+ *
91
+ * The requested schema is a **titled single-select enum** with a default
92
+ * (SEP-1330 / SEP-1034), not the boolean it used to be. Rationale: a checkbox
93
+ * labelled "Confirmer la suppression" is trivially mis-clicked and pre-checked
94
+ * by some hosts, whereas `oneOf: [{const,title}]` + `default: "cancel"` makes
95
+ * the safe answer the pre-selected one and puts the consequence
96
+ * ("Supprimer définitivement") in the option label itself.
97
+ *
98
+ * Backwards compatibility is deliberate on two axes:
99
+ * - a client still answering the old shape (`{ confirm: true }`) is honoured;
100
+ * - `required` is intentionally NOT set, so the SDK's Ajv validation of the
101
+ * response can't reject a legacy-shaped answer merely for omitting the field.
102
+ *
103
+ * The response *is* still validated by the SDK against the `oneOf` above, and a
104
+ * rejection throws — so `isElicitationResponseRejected()` peels that specific
105
+ * failure out of the catch-all fallback. Without it, a host that renders the
106
+ * titled enum as a free-text field (SEP-1330 unaware) and a user typing
107
+ * "annuler" would produce an Ajv rejection that lands in the "round-trip
108
+ * failed → delete anyway" branch: an explicit refusal causing an irreversible
109
+ * delete. Lenient schema, strict interpretation, and a validation failure counts
110
+ * as a refusal — not as a broken transport.
111
+ */
112
+ const CONFIRM_DELETE_VALUE = "delete";
113
+ const CANCEL_DELETE_VALUE = "cancel";
114
+ /**
115
+ * Did `elicitInput` throw because the *client's answer* did not match the
116
+ * requested schema? The SDK raises `McpError(InvalidParams)` in that case (and
117
+ * `InternalError` if its own validator blew up on the schema). Both mean "we
118
+ * never got a usable confirmation", which must abort — unlike a transport /
119
+ * capability failure, which keeps the legacy direct-delete behaviour.
91
120
  */
121
+ function isElicitationResponseRejected(error) {
122
+ if (!(error instanceof McpError))
123
+ return false;
124
+ if (error.code === ErrorCode.InvalidParams)
125
+ return true;
126
+ return error.code === ErrorCode.InternalError && /elicitation response/i.test(error.message);
127
+ }
92
128
  export async function confirmDeletion(server, entityName, id) {
93
129
  if (deleteConfirmationDisabled())
94
130
  return { confirmed: true };
@@ -107,21 +143,37 @@ export async function confirmDeletion(server, entityName, id) {
107
143
  requestedSchema: {
108
144
  type: "object",
109
145
  properties: {
110
- confirm: {
111
- type: "boolean",
112
- title: "Confirmer la suppression",
113
- description: `Supprimer ${entityName} #${id}`,
146
+ confirmation: {
147
+ type: "string",
148
+ title: `Suppression de ${entityName} #${id}`,
149
+ description: "Choisir « Supprimer définitivement » pour confirmer, sinon rien ne sera supprimé.",
150
+ oneOf: [
151
+ { const: CONFIRM_DELETE_VALUE, title: "Supprimer définitivement" },
152
+ { const: CANCEL_DELETE_VALUE, title: "Annuler" },
153
+ ],
154
+ default: CANCEL_DELETE_VALUE,
114
155
  },
115
156
  },
116
- required: ["confirm"],
117
157
  },
118
158
  });
119
- if (result.action === "accept" && result.content?.confirm === true) {
159
+ if (result.action !== "accept")
160
+ return { confirmed: false, reason: result.action };
161
+ const content = result.content ?? {};
162
+ if (content.confirmation === CONFIRM_DELETE_VALUE)
120
163
  return { confirmed: true };
121
- }
122
- return { confirmed: false, reason: result.action === "accept" ? "confirm=false" : result.action };
164
+ // Legacy boolean answer from a client built against the previous schema.
165
+ if (content.confirmation === undefined && content.confirm === true)
166
+ return { confirmed: true };
167
+ return {
168
+ confirmed: false,
169
+ reason: typeof content.confirmation === "string" ? `confirmation=${content.confirmation}` : "not-confirmed",
170
+ };
123
171
  }
124
- catch {
172
+ catch (error) {
173
+ // An off-schema answer is a refusal, not a broken round-trip: never delete.
174
+ if (isElicitationResponseRejected(error)) {
175
+ return { confirmed: false, reason: "invalid-confirmation-response" };
176
+ }
125
177
  return { confirmed: true };
126
178
  }
127
179
  }
@@ -1 +1 @@
1
- {"version":3,"file":"crud-factory.js","sourceRoot":"","sources":["../../src/tools/crud-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud-factory.js","sourceRoot":"","sources":["../../src/tools/crud-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { DomainName } from "../constants.js";
3
+ /**
4
+ * Per-domain registration decorations, applied centrally in
5
+ * `server.ts::registerAll` so none of the 38 domain files has to know about
6
+ * them. Two jobs, both keyed on the domain the registrar belongs to (which the
7
+ * caller knows for free — it is iterating `TOOL_REGISTRARS`):
8
+ *
9
+ * 1. enrich `*_search` input schemas with filter-correction messages
10
+ * (`validation-wrapper.ts`);
11
+ * 2. record `tool name → domain` so the icon layer can attach the right
12
+ * domain icon without parsing tool names (`icons.ts`).
13
+ *
14
+ * Deliberately NOT merged into `withPolicy`: that wrapper has a fast path
15
+ * returning the untouched server when no operation filter is active, and these
16
+ * decorations must apply unconditionally.
17
+ */
18
+ export interface RegistrationIndex {
19
+ /**
20
+ * Tool name → owning domain. Filled at registration time from
21
+ * `TOOL_REGISTRARS`, so it is exact for multi-word domains
22
+ * (`provider-invoices`) and for tools whose name doesn't start with their
23
+ * domain (`boond_workflow_*` ← `workflows`).
24
+ */
25
+ toolDomains: Map<string, DomainName>;
26
+ }
27
+ export declare function createRegistrationIndex(): RegistrationIndex;
28
+ /**
29
+ * Wrap a server (or an already-wrapped Proxy) so every `registerTool` call made
30
+ * by `domain`'s registrar is decorated. Methods other than `registerTool` pass
31
+ * straight through, bound to the real target so the SDK's private fields keep
32
+ * working (same technique as `withPolicy`).
33
+ */
34
+ export declare function decorateRegistrations(server: McpServer, domain: DomainName, index?: RegistrationIndex): McpServer;
35
+ //# sourceMappingURL=registration-decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registration-decorators.d.ts","sourceRoot":"","sources":["../../src/tools/registration-decorators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACtC;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAmBjH"}
@@ -0,0 +1,30 @@
1
+ import { withValidationFeedback } from "./validation-wrapper.js";
2
+ export function createRegistrationIndex() {
3
+ return { toolDomains: new Map() };
4
+ }
5
+ /**
6
+ * Wrap a server (or an already-wrapped Proxy) so every `registerTool` call made
7
+ * by `domain`'s registrar is decorated. Methods other than `registerTool` pass
8
+ * straight through, bound to the real target so the SDK's private fields keep
9
+ * working (same technique as `withPolicy`).
10
+ */
11
+ export function decorateRegistrations(server, domain, index) {
12
+ return new Proxy(server, {
13
+ get(target, prop) {
14
+ const value = Reflect.get(target, prop, target);
15
+ if (typeof value !== "function")
16
+ return value;
17
+ if (prop === "registerTool") {
18
+ return (...args) => {
19
+ const name = args[0];
20
+ const config = args[1];
21
+ index?.toolDomains.set(name, domain);
22
+ const decorated = config === undefined ? config : withValidationFeedback(name, config, domain);
23
+ return value.apply(target, [name, decorated, ...args.slice(2)]);
24
+ };
25
+ }
26
+ return value.bind(target);
27
+ },
28
+ });
29
+ }
30
+ //# sourceMappingURL=registration-decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registration-decorators.js","sourceRoot":"","sources":["../../src/tools/registration-decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AA4BjE,MAAM,UAAU,uBAAuB;IACrC,OAAO,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAkB,EAAE,KAAyB;IACpG,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAY,CAAC;YAC3D,IAAI,OAAO,KAAK,KAAK,UAAU;gBAAE,OAAO,KAAK,CAAC;YAE9C,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;oBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;oBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAA0C,CAAC;oBAChE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACrC,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC/F,OAAQ,KAAsC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpG,CAAC,CAAC;YACJ,CAAC;YAED,OAAQ,KAAsC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { DomainName } from "../constants.js";
2
+ /**
3
+ * Rebuild a strict object schema with a filter-aware unrecognized-key message.
4
+ * Anything else (raw shapes, non-strict objects, unions) is returned as-is —
5
+ * we never make a lenient schema strict as a side effect.
6
+ *
7
+ * The rebuild reuses the exact same field schemas, so defaults, descriptions
8
+ * and per-field messages are preserved. Only issues raised *by the object
9
+ * itself* reach our error function; a field-level failure (e.g. `page: 500`)
10
+ * keeps the message its own schema defines, which is why the returned
11
+ * `undefined` fallback matters.
12
+ */
13
+ export declare function withFilterHints<T>(schema: T, domain?: DomainName): T;
14
+ interface ToolConfigLike {
15
+ inputSchema?: unknown;
16
+ annotations?: {
17
+ openWorldHint?: boolean;
18
+ };
19
+ }
20
+ /**
21
+ * Is this a search-shaped tool, i.e. one whose filter vocabulary is worth
22
+ * explaining?
23
+ *
24
+ * Keyed on the *registration* rather than the name only. `openWorldHint: true`
25
+ * is exactly the annotation the codebase reserves for paginated,
26
+ * keyword-filtered listing tools (see CLAUDE.md §MCP Annotations), so it catches
27
+ * `boond_reporting_{companies,projects,resources,synthesis,production_plans}` —
28
+ * strict schemas carrying the same treacherous `perimeter*` / `*States`
29
+ * vocabulary, which a `_search` suffix test silently skipped — and any future
30
+ * hand-rolled search tool that doesn't happen to be named `*_search`. The name
31
+ * check is kept as an OR so a listing tool that omits the annotation is still
32
+ * covered.
33
+ */
34
+ export declare function isSearchTool(name: string, config?: ToolConfigLike): boolean;
35
+ /**
36
+ * Return the registration config a search tool should be registered with:
37
+ * the same object with its `inputSchema` swapped for the hint-enriched clone.
38
+ * Non-search tools and configs without a strict object schema come back
39
+ * untouched (same reference), so this is a no-op for the ~150 other tools.
40
+ */
41
+ export declare function withValidationFeedback<C extends ToolConfigLike>(name: string, config: C, domain?: DomainName): C;
42
+ export {};
43
+ //# sourceMappingURL=validation-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-wrapper.d.ts","sourceRoot":"","sources":["../../src/tools/validation-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAoDlD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,CAYpE;AAED,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,CAKhH"}
@@ -0,0 +1,108 @@
1
+ import { z } from "zod";
2
+ import { unknownFilterMessage, ENDPOINT_FILTER_ALIASES } from "../schemas/filter-aliases.js";
3
+ /**
4
+ * Turn a `.strict()` search schema's unrecognized-key rejection into a
5
+ * correction the model can act on (SEP-1303).
6
+ *
7
+ * ## Why this is a *schema* wrapper and not a handler wrapper
8
+ *
9
+ * The issue this implements proposed wrapping the tool handler and
10
+ * `safeParse`-ing before the SDK does. That cannot work: `McpServer` validates
11
+ * the input **before** invoking the handler
12
+ * (`server/mcp.js::validateToolInput`), so on a validation failure the handler
13
+ * is never reached. The two options left were (a) declare a permissive schema
14
+ * to the SDK and validate strictly ourselves — which drops
15
+ * `additionalProperties: false` from the advertised `inputSchema`, the thing
16
+ * that lets a client validate before it even calls us — or (b) keep the strict
17
+ * schema and make *its own* error message the correction. We do (b):
18
+ *
19
+ * - the advertised `inputSchema` is byte-for-byte what it was before (verified
20
+ * in the tests: the rebuilt schema's JSON Schema is unchanged);
21
+ * - there is no second parse, so nothing is added to the hot path of a search;
22
+ * - the SDK already reports a validation failure as a *tool* error
23
+ * (`isError: true`) rather than a protocol error — it catches its own
24
+ * `McpError` and funnels it through `createToolError`. So SEP-1303's
25
+ * requirement is met by the SDK; what was missing, and what this adds, is a
26
+ * message worth self-correcting from.
27
+ *
28
+ * Applied to search-shaped tools only (see `isSearchTool`): that is where the
29
+ * filter vocabulary is treacherous (`mainManagers` vs `perimeterManagers`,
30
+ * `states` vs `resourceStates`). `get`/`create`/`update` take ids and attribute
31
+ * names the model reads straight off the schema.
32
+ */
33
+ /** Does the domain have an endpoint-specific filter vocabulary? */
34
+ function searchEndpointOf(domain) {
35
+ if (domain !== undefined && Object.hasOwn(ENDPOINT_FILTER_ALIASES, domain))
36
+ return domain;
37
+ return undefined;
38
+ }
39
+ /**
40
+ * A Zod v4 object schema that *rejects* unknown keys — i.e. `catchall` is
41
+ * `ZodNever`, not merely present. `.catchall(z.string())` also sets it, and
42
+ * rebuilding such a schema as `strictObject` would silently turn a permissive
43
+ * schema into a strict one.
44
+ */
45
+ function isStrictObject(schema) {
46
+ if (!(schema instanceof z.ZodObject))
47
+ return false;
48
+ const def = schema._zod?.def;
49
+ return def?.catchall instanceof z.ZodNever;
50
+ }
51
+ /**
52
+ * Rebuild a strict object schema with a filter-aware unrecognized-key message.
53
+ * Anything else (raw shapes, non-strict objects, unions) is returned as-is —
54
+ * we never make a lenient schema strict as a side effect.
55
+ *
56
+ * The rebuild reuses the exact same field schemas, so defaults, descriptions
57
+ * and per-field messages are preserved. Only issues raised *by the object
58
+ * itself* reach our error function; a field-level failure (e.g. `page: 500`)
59
+ * keeps the message its own schema defines, which is why the returned
60
+ * `undefined` fallback matters.
61
+ */
62
+ export function withFilterHints(schema, domain) {
63
+ if (!isStrictObject(schema))
64
+ return schema;
65
+ const shape = schema.shape;
66
+ const validKeys = Object.keys(shape);
67
+ const endpoint = searchEndpointOf(domain);
68
+ return z.strictObject(shape, {
69
+ error: (issue) => {
70
+ const raw = issue;
71
+ if (raw.code !== "unrecognized_keys" || !Array.isArray(raw.keys))
72
+ return undefined;
73
+ return unknownFilterMessage(raw.keys.map(String), validKeys, endpoint);
74
+ },
75
+ });
76
+ }
77
+ /**
78
+ * Is this a search-shaped tool, i.e. one whose filter vocabulary is worth
79
+ * explaining?
80
+ *
81
+ * Keyed on the *registration* rather than the name only. `openWorldHint: true`
82
+ * is exactly the annotation the codebase reserves for paginated,
83
+ * keyword-filtered listing tools (see CLAUDE.md §MCP Annotations), so it catches
84
+ * `boond_reporting_{companies,projects,resources,synthesis,production_plans}` —
85
+ * strict schemas carrying the same treacherous `perimeter*` / `*States`
86
+ * vocabulary, which a `_search` suffix test silently skipped — and any future
87
+ * hand-rolled search tool that doesn't happen to be named `*_search`. The name
88
+ * check is kept as an OR so a listing tool that omits the annotation is still
89
+ * covered.
90
+ */
91
+ export function isSearchTool(name, config) {
92
+ return name.endsWith("_search") || config?.annotations?.openWorldHint === true;
93
+ }
94
+ /**
95
+ * Return the registration config a search tool should be registered with:
96
+ * the same object with its `inputSchema` swapped for the hint-enriched clone.
97
+ * Non-search tools and configs without a strict object schema come back
98
+ * untouched (same reference), so this is a no-op for the ~150 other tools.
99
+ */
100
+ export function withValidationFeedback(name, config, domain) {
101
+ if (!isSearchTool(name, config) || config?.inputSchema === undefined)
102
+ return config;
103
+ const enriched = withFilterHints(config.inputSchema, domain);
104
+ if (enriched === config.inputSchema)
105
+ return config;
106
+ return { ...config, inputSchema: enriched };
107
+ }
108
+ //# sourceMappingURL=validation-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-wrapper.js","sourceRoot":"","sources":["../../src/tools/validation-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAuB,MAAM,8BAA8B,CAAC;AAElH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,mEAAmE;AACnE,SAAS,gBAAgB,CAAC,MAA8B;IACtD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC;QAAE,OAAO,MAAwB,CAAC;IAC5G,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAAe;IACrC,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,GAAG,GAAI,MAAiE,CAAC,IAAI,EAAE,GAAG,CAAC;IACzF,OAAO,GAAG,EAAE,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAI,MAAS,EAAE,MAAmB;IAC/D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;QAC3B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,GAAG,GAAG,KAA0C,CAAC;YACvD,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YACnF,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzE,CAAC;KACF,CAAiB,CAAC;AACrB,CAAC;AAOD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAuB;IAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,EAAE,WAAW,EAAE,aAAa,KAAK,IAAI,CAAC;AACjF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAA2B,IAAY,EAAE,MAAS,EAAE,MAAmB;IAC3G,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,WAAW,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACpF,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,MAAM,CAAC,WAAW;QAAE,OAAO,MAAM,CAAC;IACnD,OAAO,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAC9C,CAAC"}
package/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "manifest_version": "0.3",
3
3
  "name": "boondmanager-mcp-server",
4
4
  "display_name": "BoondManager MCP Server",
5
- "version": "2.10.0",
5
+ "version": "2.11.0",
6
6
  "description": "MCP Server for BoondManager API - 180 tools, 11 prompts, 22 resources (ERP/CRM)",
7
7
  "author": {
8
8
  "name": "Frédéric Auguste",
@@ -30,6 +30,7 @@
30
30
  "BOOND_API_TOKEN": "${user_config.api_token}",
31
31
  "BOOND_USER": "${user_config.user}",
32
32
  "BOOND_PASSWORD": "${user_config.password}",
33
+ "BOOND_MCP_PROFILE": "${user_config.mcp_profile}",
33
34
  "BOOND_MCP_DOMAINS": "${user_config.mcp_domains}",
34
35
  "BOOND_MCP_EXCLUDE_DOMAINS": "${user_config.mcp_exclude_domains}",
35
36
  "BOOND_MCP_OPERATIONS": "${user_config.mcp_operations}",
@@ -88,6 +89,12 @@
88
89
  "sensitive": true,
89
90
  "required": false
90
91
  },
92
+ "mcp_profile": {
93
+ "type": "string",
94
+ "title": "Restriction : profil d'accès",
95
+ "description": "Profil préconfiguré parmi recruiting, sales, finance, delivery, admin (plusieurs = séparés par des virgules, union). Raccourci pour ne pas lister les domaines un par un. Ignoré si 'domaines autorisés' est renseigné. Voir docs/access-control.md.",
96
+ "required": false
97
+ },
91
98
  "mcp_domains": {
92
99
  "type": "string",
93
100
  "title": "Restriction : domaines autorisés",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "boondmanager-mcp-server",
3
- "version": "2.10.0",
3
+ "version": "2.11.0",
4
4
  "description": "MCP Server for BoondManager API - 180 tools, 11 prompts, 22 resources (ERP/CRM)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -40,6 +40,8 @@
40
40
  "typecheck": "tsc --noEmit",
41
41
  "docs:tools": "npm run build && node scripts/generate-tools-catalog.mjs",
42
42
  "docs:tools:check": "npm run build && node scripts/generate-tools-catalog.mjs --check",
43
+ "plugin:manifest": "node scripts/generate-plugin-manifest.mjs",
44
+ "plugin:manifest:check": "node scripts/generate-plugin-manifest.mjs --check",
43
45
  "api:monitor:test": "node scripts/test-api-monitor.cjs",
44
46
  "api:monitor:save": "node scripts/test-api-monitor.cjs --save",
45
47
  "prepare": "husky || true",