@wootsup/mcp 0.1.0-rc.9 → 0.1.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 (171) hide show
  1. package/README.md +7 -7
  2. package/dist/index.d.ts +19 -0
  3. package/dist/index.js +71 -5
  4. package/dist/index.js.map +1 -1
  5. package/dist/modules/apimapper/cache.d.ts +2 -2
  6. package/dist/modules/apimapper/cache.js +107 -25
  7. package/dist/modules/apimapper/cache.js.map +1 -1
  8. package/dist/modules/apimapper/client.d.ts +40 -0
  9. package/dist/modules/apimapper/client.js +82 -12
  10. package/dist/modules/apimapper/client.js.map +1 -1
  11. package/dist/modules/apimapper/connections-format.d.ts +51 -0
  12. package/dist/modules/apimapper/connections-format.js +261 -0
  13. package/dist/modules/apimapper/connections-format.js.map +1 -0
  14. package/dist/modules/apimapper/connections-trim.d.ts +82 -0
  15. package/dist/modules/apimapper/connections-trim.js +224 -0
  16. package/dist/modules/apimapper/connections-trim.js.map +1 -0
  17. package/dist/modules/apimapper/connections.d.ts +14 -2
  18. package/dist/modules/apimapper/connections.js +447 -143
  19. package/dist/modules/apimapper/connections.js.map +1 -1
  20. package/dist/modules/apimapper/credentials-format.d.ts +21 -0
  21. package/dist/modules/apimapper/credentials-format.js +145 -0
  22. package/dist/modules/apimapper/credentials-format.js.map +1 -0
  23. package/dist/modules/apimapper/credentials.d.ts +12 -2
  24. package/dist/modules/apimapper/credentials.js +253 -72
  25. package/dist/modules/apimapper/credentials.js.map +1 -1
  26. package/dist/modules/apimapper/diagnose.d.ts +54 -2
  27. package/dist/modules/apimapper/diagnose.js +193 -11
  28. package/dist/modules/apimapper/diagnose.js.map +1 -1
  29. package/dist/modules/apimapper/elicitation.d.ts +54 -0
  30. package/dist/modules/apimapper/elicitation.js +90 -0
  31. package/dist/modules/apimapper/elicitation.js.map +1 -0
  32. package/dist/modules/apimapper/flows-format.d.ts +50 -0
  33. package/dist/modules/apimapper/flows-format.js +318 -0
  34. package/dist/modules/apimapper/flows-format.js.map +1 -0
  35. package/dist/modules/apimapper/flows.d.ts +13 -2
  36. package/dist/modules/apimapper/flows.js +325 -118
  37. package/dist/modules/apimapper/flows.js.map +1 -1
  38. package/dist/modules/apimapper/gateway/advanced-tool.d.ts +9 -0
  39. package/dist/modules/apimapper/gateway/advanced-tool.js +214 -0
  40. package/dist/modules/apimapper/gateway/advanced-tool.js.map +1 -0
  41. package/dist/modules/apimapper/gateway/capturing-server.d.ts +81 -0
  42. package/dist/modules/apimapper/gateway/capturing-server.js +87 -0
  43. package/dist/modules/apimapper/gateway/capturing-server.js.map +1 -0
  44. package/dist/modules/apimapper/gateway/essentials.d.ts +4 -0
  45. package/dist/modules/apimapper/gateway/essentials.js +28 -0
  46. package/dist/modules/apimapper/gateway/essentials.js.map +1 -0
  47. package/dist/modules/apimapper/gateway/test-support.d.ts +17 -0
  48. package/dist/modules/apimapper/gateway/test-support.js +43 -0
  49. package/dist/modules/apimapper/gateway/test-support.js.map +1 -0
  50. package/dist/modules/apimapper/get-skill.d.ts +3 -3
  51. package/dist/modules/apimapper/get-skill.js +4 -2
  52. package/dist/modules/apimapper/get-skill.js.map +1 -1
  53. package/dist/modules/apimapper/graph-builder.js +1 -1
  54. package/dist/modules/apimapper/graph-builder.js.map +1 -1
  55. package/dist/modules/apimapper/graph.d.ts +2 -2
  56. package/dist/modules/apimapper/graph.js +165 -34
  57. package/dist/modules/apimapper/graph.js.map +1 -1
  58. package/dist/modules/apimapper/index.d.ts +17 -1
  59. package/dist/modules/apimapper/index.js +66 -17
  60. package/dist/modules/apimapper/index.js.map +1 -1
  61. package/dist/modules/apimapper/inspect.d.ts +3 -2
  62. package/dist/modules/apimapper/inspect.js +97 -13
  63. package/dist/modules/apimapper/inspect.js.map +1 -1
  64. package/dist/modules/apimapper/library.d.ts +2 -2
  65. package/dist/modules/apimapper/library.js +303 -60
  66. package/dist/modules/apimapper/library.js.map +1 -1
  67. package/dist/modules/apimapper/license-format.d.ts +22 -0
  68. package/dist/modules/apimapper/license-format.js +149 -0
  69. package/dist/modules/apimapper/license-format.js.map +1 -0
  70. package/dist/modules/apimapper/license.d.ts +16 -2
  71. package/dist/modules/apimapper/license.js +85 -37
  72. package/dist/modules/apimapper/license.js.map +1 -1
  73. package/dist/modules/apimapper/local-sources.d.ts +2 -2
  74. package/dist/modules/apimapper/local-sources.js +58 -30
  75. package/dist/modules/apimapper/local-sources.js.map +1 -1
  76. package/dist/modules/apimapper/misc.d.ts +30 -2
  77. package/dist/modules/apimapper/misc.js +129 -50
  78. package/dist/modules/apimapper/misc.js.map +1 -1
  79. package/dist/modules/apimapper/node-schema.d.ts +52 -0
  80. package/dist/modules/apimapper/node-schema.js +70 -2
  81. package/dist/modules/apimapper/node-schema.js.map +1 -1
  82. package/dist/modules/apimapper/normalizers.d.ts +1 -0
  83. package/dist/modules/apimapper/normalizers.js +51 -0
  84. package/dist/modules/apimapper/normalizers.js.map +1 -1
  85. package/dist/modules/apimapper/onboarding.d.ts +48 -2
  86. package/dist/modules/apimapper/onboarding.js +324 -17
  87. package/dist/modules/apimapper/onboarding.js.map +1 -1
  88. package/dist/modules/apimapper/read-cache.d.ts +31 -2
  89. package/dist/modules/apimapper/read-cache.js +20 -6
  90. package/dist/modules/apimapper/read-cache.js.map +1 -1
  91. package/dist/modules/apimapper/render/_shared.d.ts +24 -0
  92. package/dist/modules/apimapper/render/_shared.js +84 -0
  93. package/dist/modules/apimapper/render/_shared.js.map +1 -0
  94. package/dist/modules/apimapper/render/dag.d.ts +18 -0
  95. package/dist/modules/apimapper/render/dag.js +70 -0
  96. package/dist/modules/apimapper/render/dag.js.map +1 -0
  97. package/dist/modules/apimapper/render/index.d.ts +2 -0
  98. package/dist/modules/apimapper/render/index.js +112 -0
  99. package/dist/modules/apimapper/render/index.js.map +1 -0
  100. package/dist/modules/apimapper/render/renderers/chart-bar.d.ts +2 -0
  101. package/dist/modules/apimapper/render/renderers/chart-bar.js +70 -0
  102. package/dist/modules/apimapper/render/renderers/chart-bar.js.map +1 -0
  103. package/dist/modules/apimapper/render/renderers/chart-line.d.ts +2 -0
  104. package/dist/modules/apimapper/render/renderers/chart-line.js +71 -0
  105. package/dist/modules/apimapper/render/renderers/chart-line.js.map +1 -0
  106. package/dist/modules/apimapper/render/renderers/diff.d.ts +2 -0
  107. package/dist/modules/apimapper/render/renderers/diff.js +154 -0
  108. package/dist/modules/apimapper/render/renderers/diff.js.map +1 -0
  109. package/dist/modules/apimapper/render/renderers/flow-diagram.d.ts +1 -0
  110. package/dist/modules/apimapper/render/renderers/flow-diagram.js +180 -0
  111. package/dist/modules/apimapper/render/renderers/flow-diagram.js.map +1 -0
  112. package/dist/modules/apimapper/render/renderers/json-tree.d.ts +2 -0
  113. package/dist/modules/apimapper/render/renderers/json-tree.js +87 -0
  114. package/dist/modules/apimapper/render/renderers/json-tree.js.map +1 -0
  115. package/dist/modules/apimapper/render/renderers/schema-diagram.d.ts +2 -0
  116. package/dist/modules/apimapper/render/renderers/schema-diagram.js +83 -0
  117. package/dist/modules/apimapper/render/renderers/schema-diagram.js.map +1 -0
  118. package/dist/modules/apimapper/render/renderers/table.d.ts +2 -0
  119. package/dist/modules/apimapper/render/renderers/table.js +75 -0
  120. package/dist/modules/apimapper/render/renderers/table.js.map +1 -0
  121. package/dist/modules/apimapper/render/schemas.d.ts +23 -0
  122. package/dist/modules/apimapper/render/schemas.js +56 -0
  123. package/dist/modules/apimapper/render/schemas.js.map +1 -0
  124. package/dist/modules/apimapper/render/secret-masking.d.ts +5 -0
  125. package/dist/modules/apimapper/render/secret-masking.js +51 -0
  126. package/dist/modules/apimapper/render/secret-masking.js.map +1 -0
  127. package/dist/modules/apimapper/render/sidecar.d.ts +21 -0
  128. package/dist/modules/apimapper/render/sidecar.js +66 -0
  129. package/dist/modules/apimapper/render/sidecar.js.map +1 -0
  130. package/dist/modules/apimapper/render/token-cap.d.ts +21 -0
  131. package/dist/modules/apimapper/render/token-cap.js +57 -0
  132. package/dist/modules/apimapper/render/token-cap.js.map +1 -0
  133. package/dist/modules/apimapper/schema.d.ts +2 -2
  134. package/dist/modules/apimapper/schema.js +100 -32
  135. package/dist/modules/apimapper/schema.js.map +1 -1
  136. package/dist/modules/apimapper/settings-format.d.ts +23 -0
  137. package/dist/modules/apimapper/settings-format.js +135 -0
  138. package/dist/modules/apimapper/settings-format.js.map +1 -0
  139. package/dist/modules/apimapper/settings.d.ts +2 -2
  140. package/dist/modules/apimapper/settings.js +101 -40
  141. package/dist/modules/apimapper/settings.js.map +1 -1
  142. package/dist/modules/apimapper/skill-resources.d.ts +2 -2
  143. package/dist/modules/apimapper/skill-resources.js.map +1 -1
  144. package/dist/modules/apimapper/token-baseline.harness.d.ts +91 -0
  145. package/dist/modules/apimapper/token-baseline.harness.js +291 -0
  146. package/dist/modules/apimapper/token-baseline.harness.js.map +1 -0
  147. package/dist/modules/apimapper/toolslist-size.d.ts +55 -0
  148. package/dist/modules/apimapper/toolslist-size.js +190 -0
  149. package/dist/modules/apimapper/toolslist-size.js.map +1 -0
  150. package/dist/modules/apimapper/types.d.ts +23 -8
  151. package/dist/modules/apimapper/types.js +26 -1
  152. package/dist/modules/apimapper/types.js.map +1 -1
  153. package/dist/modules/apimapper/use-profile.d.ts +21 -0
  154. package/dist/modules/apimapper/use-profile.js +56 -2
  155. package/dist/modules/apimapper/use-profile.js.map +1 -1
  156. package/dist/modules/apimapper/workflows.d.ts +2 -2
  157. package/dist/modules/apimapper/workflows.js +143 -16
  158. package/dist/modules/apimapper/workflows.js.map +1 -1
  159. package/dist/platform/index.js +44 -5
  160. package/dist/platform/index.js.map +1 -1
  161. package/dist/setup-cli.d.ts +53 -0
  162. package/dist/setup-cli.js +126 -4
  163. package/dist/setup-cli.js.map +1 -1
  164. package/docs/architecture.md +1 -1
  165. package/docs/tools.md +1 -1
  166. package/manifest.json +12 -3
  167. package/package.json +9 -4
  168. package/skills/apimapper/SKILL.md +1 -1
  169. package/skills/apimapper/reference/render.md +132 -0
  170. package/skills/apimapper/reference/troubleshooting.md +1 -1
  171. package/skills/apimapper/reference/yootheme.md +1 -1
@@ -0,0 +1,135 @@
1
+ // src/modules/apimapper/settings-format.ts — W3.1 structuredContent helpers
2
+ //
3
+ // rc.13 Welle 3 (2026-05-20) — extracted from settings.ts when the migration
4
+ // to the toolkit's structuredContent builders added the detail builders for
5
+ // settings_get / features_get and the table shape for health_warnings_list.
6
+ // The tool-registration module (settings.ts) keeps the lean surface; the
7
+ // column constants, detail builders and next-step strings live here —
8
+ // matching connections-format.ts / credentials-format.ts.
9
+ //
10
+ // - settings_get / features_get → detailResult (display="detail"): a flat
11
+ // scalar settings/feature dict renders as grouped key-value entries.
12
+ // - health_warnings_list → tableResult (display="data-table").
13
+ // - IA-10 (W3.9): every migrated tool carries actionable next-step guidance
14
+ // in the LLM-readable text (table footer / detail "Next steps" group).
15
+ import { detailResult, } from "@getimo/mcp-toolkit";
16
+ // ── health_warnings_list table shape ──────────────────────────────────
17
+ export const HEALTH_WARNINGS_COLUMNS = [
18
+ { key: "credentialId", label: "CREDENTIAL_ID", width: 32 },
19
+ { key: "type", label: "TYPE", width: 28 },
20
+ ];
21
+ // IA-10: next-step guidance, kept in the table footer so it is VISIBLE in the
22
+ // LLM-readable text of the warning list.
23
+ export const HEALTH_WARNINGS_NEXT_STEPS = "Next: apimapper_health_warnings_dismiss({ id }) to dismiss a warning · " +
24
+ "apimapper_credential_get({ id }) to inspect the affected credential.";
25
+ /** health_warnings_list row map: warning item → table row. */
26
+ export function mapHealthWarningRow(w) {
27
+ return {
28
+ credentialId: w.credentialId ? String(w.credentialId) : "—",
29
+ type: w.type ? String(w.type) : "—",
30
+ };
31
+ }
32
+ /** Coerce a scalar settings value into a detail entry string. */
33
+ function scalarStr(v) {
34
+ if (v === null || v === undefined)
35
+ return "—";
36
+ if (typeof v === "boolean")
37
+ return v ? "true" : "false";
38
+ return String(v);
39
+ }
40
+ /**
41
+ * Build a structured detail view for settings_get.
42
+ *
43
+ * The settings dict is a flat scalar map (cache_ttl, debug_mode, log_level,
44
+ * …) — each key becomes a detail entry. The active license tier is the
45
+ * badge; the canonical SETTABLE_KEYS list + next-step calls go into an
46
+ * IA-10 "Next steps" group so the LLM reads the affordance in the text.
47
+ */
48
+ export function buildSettingsDetail(tier, settings, settableKeys) {
49
+ const entries = Object.keys(settings).map((key) => ({
50
+ key,
51
+ label: key,
52
+ value: scalarStr(settings[key]),
53
+ format: typeof settings[key] === "boolean" ? "boolean" : "text",
54
+ }));
55
+ const groups = [];
56
+ groups.push({
57
+ label: "Settings",
58
+ entries: entries.length > 0
59
+ ? entries
60
+ : [{ key: "_empty", label: "Settings", value: "no settings returned" }],
61
+ });
62
+ groups.push({
63
+ // IA-10 (W3.9): actionable next steps in a dedicated group.
64
+ label: "Next steps",
65
+ entries: [
66
+ {
67
+ key: "settable_keys",
68
+ label: "Settable keys",
69
+ value: settableKeys.join(", "),
70
+ },
71
+ {
72
+ key: "update",
73
+ label: "Update",
74
+ value: "apimapper_settings_update({ patch: { … } }) — only the settable keys above are honored",
75
+ },
76
+ ],
77
+ });
78
+ return detailResult({
79
+ title: "API Mapper Settings",
80
+ subtitle: tier ? `License tier: ${tier}` : undefined,
81
+ badge: tier
82
+ ? { text: `tier: ${tier}`, variant: "info" }
83
+ : { text: "settings", variant: "secondary" },
84
+ groups,
85
+ });
86
+ }
87
+ /**
88
+ * Build a structured detail view for features_get.
89
+ *
90
+ * The feature dict mixes booleans (jmespath: true) and numeric limits
91
+ * (max_connections: -1) — each key becomes a detail entry. The active tier
92
+ * is the badge; a single IA-10 "Next steps" group points at the license
93
+ * tools for upgrading a gated feature.
94
+ */
95
+ export function buildFeaturesDetail(tier, features) {
96
+ const keys = Object.keys(features);
97
+ const entries = keys.map((key) => ({
98
+ key,
99
+ label: key,
100
+ value: scalarStr(features[key]),
101
+ format: typeof features[key] === "boolean" ? "boolean" : "text",
102
+ }));
103
+ const groups = [];
104
+ groups.push({
105
+ label: "Features",
106
+ entries: entries.length > 0
107
+ ? entries
108
+ : [{ key: "_empty", label: "Features", value: "no features returned" }],
109
+ });
110
+ groups.push({
111
+ label: "Next steps",
112
+ entries: [
113
+ {
114
+ key: "feature_count",
115
+ label: "Feature count",
116
+ value: keys.length,
117
+ format: "text",
118
+ },
119
+ {
120
+ key: "upgrade",
121
+ label: "Upgrade",
122
+ value: "A gated feature unlocks with a higher tier — apimapper_license_status to check the current license, apimapper_license_activate to apply a new key.",
123
+ },
124
+ ],
125
+ });
126
+ return detailResult({
127
+ title: "License-Gated Features",
128
+ subtitle: tier ? `License tier: ${tier}` : undefined,
129
+ badge: tier
130
+ ? { text: `tier: ${tier}`, variant: "info" }
131
+ : { text: "features", variant: "secondary" },
132
+ groups,
133
+ });
134
+ }
135
+ //# sourceMappingURL=settings-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-format.js","sourceRoot":"","sources":["../../../src/modules/apimapper/settings-format.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function registerSettingsTools(server: McpServer): void;
1
+ import type { ToolRegistrar } from "./gateway/capturing-server.js";
2
+ export declare function registerSettingsTools(server: ToolRegistrar): void;
@@ -1,6 +1,8 @@
1
1
  import { z } from "zod";
2
- import { formatResult, autoFormatTable, readOnly, mutating, destructive, } from "@getimo/mcp-toolkit";
2
+ import { formatResult, tableResult, errorResult, readOnly, mutating, destructive, } from "@getimo/mcp-toolkit";
3
3
  import { request, hintFor } from "./client.js";
4
+ import { toRows } from "./types.js";
5
+ import { HEALTH_WARNINGS_COLUMNS, HEALTH_WARNINGS_NEXT_STEPS, mapHealthWarningRow, buildSettingsDetail, buildFeaturesDetail, } from "./settings-format.js";
4
6
  // SettingsHandler::sanitizeSettingsData (core/src/Admin/Handler/SettingsHandler.php)
5
7
  // pins the canonical allow-list. Keep this in sync with that PHP constant.
6
8
  const SETTABLE_KEYS = [
@@ -12,6 +14,28 @@ const SETTABLE_KEYS = [
12
14
  "delete_data_on_uninstall",
13
15
  "error_reporting",
14
16
  ];
17
+ // F-18 (W1.11): Strict patch schema — typed per-key, .strict() rejects unknown
18
+ // keys at the Zod boundary so callers see a clear error instead of having
19
+ // keys dropped silently by the server. PHP server-side limits api_timeout to
20
+ // 1..120 (SettingsHandler.php) — surfaced here as int >=1 (upper-bound coerce
21
+ // stays server-side so we don't fail closed if PHP ever widens the cap).
22
+ // log_level intentionally `z.string()` (not enum): PHP accepts any string and
23
+ // existing wire fixtures use values like "warning"/"warn" interchangeably.
24
+ const settingsPatchSchema = z
25
+ .object({
26
+ cache_ttl: z.number().int().min(0).optional(),
27
+ debug_mode: z.boolean().optional(),
28
+ log_level: z.string().optional(),
29
+ api_timeout: z.number().int().min(1).optional(),
30
+ server_debug_mode: z.boolean().optional(),
31
+ delete_data_on_uninstall: z.boolean().optional(),
32
+ error_reporting: z.boolean().optional(),
33
+ })
34
+ .strict()
35
+ .describe("Settings patch (strict allow-list). Unknown keys rejected at schema level. " +
36
+ "Known SETTABLE_KEYS: " +
37
+ SETTABLE_KEYS.join(", ") +
38
+ ". Provide any subset; only changed keys are sent.");
15
39
  export function registerSettingsTools(server) {
16
40
  // ── apimapper_settings_get ─────────────────────────────────────────
17
41
  // F-A6-09: PHP returns `{success, settings, tier}`. Surface tier + settings
@@ -23,20 +47,24 @@ export function registerSettingsTools(server) {
23
47
  "server_debug_mode, delete_data_on_uninstall, error_reporting) plus the active license tier." +
24
48
  "\n\nExample:\n apimapper_settings_get({})",
25
49
  inputSchema: {},
26
- annotations: readOnly(),
50
+ annotations: readOnly({ title: "Get Settings", openWorld: true }),
27
51
  }, async () => {
28
52
  const r = await request("/settings");
29
53
  if (!r.success) {
30
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: {}, hint: hintFor(r.errorCode) }, true);
54
+ return errorResult({
55
+ message: r.error ?? "settings get failed",
56
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
57
+ suggestion: hintFor(r.errorCode),
58
+ details: {},
59
+ });
31
60
  }
32
61
  const settings = (r.data?.settings && typeof r.data.settings === "object")
33
62
  ? r.data.settings
34
63
  : {};
35
- return formatResult({
36
- tier: r.data?.tier,
37
- settings,
38
- settable_keys: SETTABLE_KEYS,
39
- }, false, { maxChars: 4000 });
64
+ // W3.1 — detailResult: grouped key-value detail for the Rich Card. The
65
+ // settings dict is a flat scalar map; IA-10 carries the settable-keys
66
+ // affordance + the settings_update follow-up in a "Next steps" group.
67
+ return buildSettingsDetail(r.data?.tier, settings, SETTABLE_KEYS);
40
68
  });
41
69
  // ── apimapper_settings_update ──────────────────────────────────────
42
70
  // F-A6-10: Real allow-list is SETTABLE_KEYS above; telemetry_enabled +
@@ -49,22 +77,22 @@ export function registerSettingsTools(server) {
49
77
  "Use apimapper_settings_get to inspect the current full set." +
50
78
  "\n\nExample:\n apimapper_settings_update({ patch: { cache_ttl: 600, debug_mode: true } })",
51
79
  inputSchema: {
52
- patch: z.record(z.string(), z.unknown()).describe("Settings keys to update (any subset of the allow-list)."),
80
+ patch: settingsPatchSchema,
53
81
  },
54
- annotations: mutating(),
82
+ annotations: mutating({ title: "Update Settings", openWorld: true }),
55
83
  }, async ({ patch }) => {
84
+ const requestedKeys = Object.keys(patch);
56
85
  const r = await request("/settings", {
57
86
  method: "POST",
58
87
  body: JSON.stringify(patch),
59
88
  });
60
89
  if (!r.success) {
61
- return formatResult({
62
- error: r.error,
63
- status: r.status,
64
- errorCode: r.errorCode,
65
- context: { keys: Object.keys(patch) },
66
- hint: hintFor(r.errorCode),
67
- }, true);
90
+ return errorResult({
91
+ message: r.error ?? "settings update failed",
92
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
93
+ suggestion: hintFor(r.errorCode),
94
+ details: { keys: requestedKeys },
95
+ });
68
96
  }
69
97
  // PHP returns the post-update sanitised settings dict; surface what was
70
98
  // actually applied (not what was requested), so the caller can spot
@@ -72,10 +100,17 @@ export function registerSettingsTools(server) {
72
100
  const appliedSettings = (r.data?.settings && typeof r.data.settings === "object")
73
101
  ? r.data.settings
74
102
  : undefined;
103
+ // F-18 (W1.11): compute server-side dropped keys. With .strict() unknown
104
+ // keys never reach here, but the server can still drop keys (e.g. a
105
+ // tier-gated value gets sanitised away). dropped_keys only surfaces when
106
+ // non-empty so the success envelope stays clean.
107
+ const appliedKeys = appliedSettings ? Object.keys(appliedSettings) : [];
108
+ const droppedKeys = requestedKeys.filter((k) => !appliedKeys.includes(k));
75
109
  return formatResult({
76
110
  updated: true,
77
- requested_keys: Object.keys(patch),
111
+ requested_keys: requestedKeys,
78
112
  applied_settings: appliedSettings,
113
+ ...(droppedKeys.length > 0 ? { dropped_keys: droppedKeys } : {}),
79
114
  }, false, { maxChars: 2000 });
80
115
  });
81
116
  // ── apimapper_settings_reset_demo ──────────────────────────────────
@@ -92,7 +127,7 @@ export function registerSettingsTools(server) {
92
127
  .default(false)
93
128
  .describe("Must be true to execute. Ask user for confirmation first."),
94
129
  },
95
- annotations: destructive(),
130
+ annotations: destructive({ title: "Reset Demo Settings", openWorld: true }),
96
131
  }, async ({ confirm }) => {
97
132
  if (!confirm) {
98
133
  return formatResult({
@@ -104,7 +139,12 @@ export function registerSettingsTools(server) {
104
139
  }
105
140
  const r = await request("/settings/reset-demo", { method: "POST" });
106
141
  if (!r.success) {
107
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: {}, hint: hintFor(r.errorCode) }, true);
142
+ return errorResult({
143
+ message: r.error ?? "demo reset failed",
144
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
145
+ suggestion: hintFor(r.errorCode),
146
+ details: {},
147
+ });
108
148
  }
109
149
  return formatResult({ reset: true, result: r.data?.result }, false, { maxChars: 2000 });
110
150
  });
@@ -116,15 +156,24 @@ export function registerSettingsTools(server) {
116
156
  "(e.g., 'max_connections: 1'); read each key by its expected type." +
117
157
  "\n\nExample:\n apimapper_features_get({})",
118
158
  inputSchema: {},
119
- annotations: readOnly(),
159
+ annotations: readOnly({ title: "Get Feature Flags", openWorld: true }),
120
160
  }, async () => {
121
161
  const r = await request("/features");
122
162
  if (!r.success) {
123
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: {}, hint: hintFor(r.errorCode) }, true);
163
+ return errorResult({
164
+ message: r.error ?? "features get failed",
165
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
166
+ suggestion: hintFor(r.errorCode),
167
+ details: {},
168
+ });
124
169
  }
125
- const features = r.data?.features ?? {};
126
- const featureCount = Object.keys(features).length;
127
- return formatResult({ tier: r.data?.tier, feature_count: featureCount, features }, false, { maxChars: 4000 });
170
+ const features = (r.data?.features && typeof r.data.features === "object")
171
+ ? r.data.features
172
+ : {};
173
+ // W3.1 — detailResult: the feature dict mixes booleans + numeric limits;
174
+ // each key becomes a scalar detail entry. IA-10 "Next steps" group
175
+ // points at the license tools for unlocking a gated feature.
176
+ return buildFeaturesDetail(r.data?.tier, features);
128
177
  });
129
178
  // ── apimapper_platform_parity ──────────────────────────────────────
130
179
  // F-A6-02: PHP PlatformParityHandler returns `{matrix, summary, gaps}` —
@@ -134,11 +183,16 @@ export function registerSettingsTools(server) {
134
183
  description: "Compare feature parity between WordPress and Joomla versions of API Mapper." +
135
184
  "\n\nExample:\n apimapper_platform_parity({})",
136
185
  inputSchema: {},
137
- annotations: readOnly(),
186
+ annotations: readOnly({ title: "Check Platform Parity", openWorld: true }),
138
187
  }, async () => {
139
188
  const r = await request("/platform-parity");
140
189
  if (!r.success) {
141
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: {}, hint: hintFor(r.errorCode) }, true);
190
+ return errorResult({
191
+ message: r.error ?? "platform parity failed",
192
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
193
+ suggestion: hintFor(r.errorCode),
194
+ details: {},
195
+ });
142
196
  }
143
197
  const gaps = Array.isArray(r.data?.gaps) ? r.data.gaps : [];
144
198
  return formatResult({
@@ -156,24 +210,26 @@ export function registerSettingsTools(server) {
156
210
  description: "List active admin health-warnings (banners shown in the Admin UI)." +
157
211
  "\n\nExample:\n apimapper_health_warnings_list({})",
158
212
  inputSchema: {},
159
- annotations: readOnly(),
213
+ annotations: readOnly({ title: "List Health Warnings", openWorld: true }),
160
214
  }, async () => {
161
215
  const r = await request("/admin/health-warnings");
162
216
  if (!r.success) {
163
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: {}, hint: hintFor(r.errorCode) }, true);
217
+ return errorResult({
218
+ message: r.error ?? "health warnings list failed",
219
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
220
+ suggestion: hintFor(r.errorCode),
221
+ details: {},
222
+ });
164
223
  }
165
224
  const items = Array.isArray(r.data?.items) ? r.data.items : [];
166
225
  const visible = Boolean(r.data?.visible);
167
- return autoFormatTable(items.map((w) => ({
168
- credentialId: w.credentialId || "—",
169
- type: w.type || "—",
170
- })), {
171
- columns: [
172
- { key: "credentialId", label: "CREDENTIAL_ID", width: 32 },
173
- { key: "type", label: "TYPE", width: 28 },
174
- ],
226
+ // W3.1 tableResult: ASCII table for the LLM + typed DataTable payload
227
+ // for the Rich Card. IA-10: the footer carries the next-step guidance.
228
+ return tableResult(toRows(items), {
229
+ columns: HEALTH_WARNINGS_COLUMNS,
230
+ map: mapHealthWarningRow,
175
231
  header: (n) => `${n} active warnings${visible ? "" : " (banner dismissed)"}`,
176
- footer: "Use apimapper_health_warnings_dismiss to dismiss the current set.",
232
+ footer: HEALTH_WARNINGS_NEXT_STEPS,
177
233
  });
178
234
  });
179
235
  // ── apimapper_health_warnings_dismiss ──────────────────────────────
@@ -184,14 +240,19 @@ export function registerSettingsTools(server) {
184
240
  inputSchema: {
185
241
  id: z.string().describe("Warning ID. Use apimapper_health_warnings_list to find."),
186
242
  },
187
- annotations: mutating(),
243
+ annotations: mutating({ title: "Dismiss Health Warning", openWorld: true }),
188
244
  }, async ({ id }) => {
189
245
  const r = await request("/admin/health-warnings/dismiss", {
190
246
  method: "POST",
191
247
  body: JSON.stringify({ id }),
192
248
  });
193
249
  if (!r.success) {
194
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: { id }, hint: hintFor(r.errorCode) }, true);
250
+ return errorResult({
251
+ message: r.error ?? "warning dismiss failed",
252
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
253
+ suggestion: hintFor(r.errorCode),
254
+ details: { id },
255
+ });
195
256
  }
196
257
  return formatResult({ dismissed: true, id }, false, { maxChars: 1500 });
197
258
  });
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/modules/apimapper/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/modules/apimapper/settings.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import type { ToolRegistrar } from "./gateway/capturing-server.js";
2
2
  export declare const SKILL_RESOURCE_URIS: readonly ["skill://apimapper/getting-started", "skill://apimapper/oauth", "skill://apimapper/yootheme", "skill://apimapper/joomla", "skill://apimapper/troubleshooting"];
3
3
  export type SkillResourceUri = (typeof SKILL_RESOURCE_URIS)[number];
4
- export declare function registerSkillResources(server: McpServer, rootDir?: string): void;
4
+ export declare function registerSkillResources(server: ToolRegistrar, rootDir?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"skill-resources.js","sourceRoot":"","sources":["../../../src/modules/apimapper/skill-resources.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,sEAAsE;AACtE,4EAA4E;AAC5E,6DAA6D;AAC7D,EAAE;AACF,6EAA6E;AAC7E,uEAAuE;AACvE,0EAA0E;AAC1E,EAAE;AACF,4CAA4C;AAC5C,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,gFAAgF;AAChF,6EAA6E;AAC7E,uCAAuC;AACvC,qFAAqF;AAGrF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,mCAAmC;IACnC,yBAAyB;IACzB,4BAA4B;IAC5B,0BAA0B;IAC1B,mCAAmC;CAC3B,CAAC;AAYX,MAAM,SAAS,GAAwB;IACrC;QACE,GAAG,EAAE,mCAAmC;QACxC,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,gGAAgG;QAClG,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,+FAA+F;QACjG,QAAQ,EAAE,oBAAoB;KAC/B;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,iGAAiG;QACnG,QAAQ,EAAE,uBAAuB;KAClC;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,2FAA2F;QACxG,QAAQ,EAAE,qBAAqB;KAChC;IACD;QACE,GAAG,EAAE,mCAAmC;QACxC,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,mGAAmG;QACrG,QAAQ,EAAE,8BAA8B;KACzC;CACF,CAAC;AAEF,SAAS,iBAAiB;IACxB,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,OAAgB;IACxE,MAAM,OAAO,GAAG,OAAO,IAAI,iBAAiB,EAAE,CAAC;IAE/C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,CAAC,gBAAgB,CACrB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,GAAG,EACR;YACE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,eAAe;YACzB,sEAAsE;YACtE,kEAAkE;YAClE,gEAAgE;YAChE,6DAA6D;YAC7D,WAAW,EAAE;gBACX,QAAQ,EAAE,CAAC,WAAW,CAAC;gBACvB,QAAQ,EAAE,GAAG;aACd;SACF,EACD,KAAK,EAAE,GAAQ,EAAE,EAAE;YACjB,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5C,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;wBACnB,QAAQ,EAAE,eAAe;wBACzB,IAAI;qBACL;iBACF;aACF,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"skill-resources.js","sourceRoot":"","sources":["../../../src/modules/apimapper/skill-resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * A canned REST body — either a raw string sent as-is, or a JSON-serializable
3
+ * object/array that the harness stringifies. Narrowing to these three shapes
4
+ * keeps the `JSON.stringify` branch type-safe without falling back to `unknown`.
5
+ */
6
+ export type CannedBody = string | Record<string, unknown> | unknown[];
7
+ /** A single fetch result the responder hands back for one upstream URL. */
8
+ export interface CannedResponse {
9
+ /** HTTP status. Defaults to 200 when omitted. */
10
+ status?: number;
11
+ /** Response body — an object/array is JSON-stringified; a string is sent as-is. */
12
+ body: CannedBody;
13
+ }
14
+ /** Maps an upstream request (URL + init) to a canned REST response. */
15
+ export type FetchResponder = (url: string, init?: RequestInit) => CannedResponse;
16
+ /** The shape every apimapper tool handler resolves to (MCP CallToolResult). */
17
+ interface ToolCallResult {
18
+ content?: Array<{
19
+ type: string;
20
+ text?: string;
21
+ }>;
22
+ isError?: boolean;
23
+ }
24
+ /** A registered tool: its handler is what the harness invokes. */
25
+ export interface RegisteredHarnessTool {
26
+ handler: (args: Record<string, unknown>, extra?: unknown) => Promise<ToolCallResult> | ToolCallResult;
27
+ }
28
+ /** Per-tool byte tally for one replayed call. */
29
+ export interface SequenceEntry {
30
+ tool: string;
31
+ /**
32
+ * Total UTF-8 bytes of the result's `content[].text` blocks — the raw
33
+ * payload an MCP client receives. This is the historical token-baseline
34
+ * metric and the field the ≥40% goal is measured against.
35
+ */
36
+ bytes: number;
37
+ /**
38
+ * `bytes` minus the toolkit's embedded `<!-- structured-meta:… -->` base64
39
+ * marker(s). Some MCP hosts (the WootsUp Chat UI) strip this marker before
40
+ * the LLM sees the text; generic hosts (Claude Desktop / Cursor) do not.
41
+ * Reporting both keeps the post-W3 measurement honest about which figure a
42
+ * given host actually pays.
43
+ */
44
+ visibleBytes: number;
45
+ }
46
+ /** The full harness measurement. */
47
+ export interface TokenBaselineResult {
48
+ sequence: SequenceEntry[];
49
+ /** Sum of `bytes` (raw text incl. structured-meta marker) across the run. */
50
+ totalBytes: number;
51
+ /** Sum of `visibleBytes` (marker stripped) across the run. */
52
+ totalVisibleBytes: number;
53
+ }
54
+ /**
55
+ * One step of the canonical sequence — the tool to invoke and the canned
56
+ * real-shape arguments to invoke it with.
57
+ */
58
+ interface SequenceStep {
59
+ tool: string;
60
+ args: Record<string, unknown>;
61
+ }
62
+ /**
63
+ * The canonical 8-call walkthrough (the Maria mixed-feed flow): a fresh user
64
+ * discovers the install, activates a library template, inspects a connection,
65
+ * builds and validates a flow, then compiles it. Inputs are real-shape and
66
+ * fixed so the measurement is reproducible.
67
+ */
68
+ export declare const CANONICAL_SEQUENCE: readonly SequenceStep[];
69
+ /** The tool names the canonical sequence exercises, in call order. */
70
+ export declare const CANONICAL_TOOLS: readonly string[];
71
+ /**
72
+ * Canonical fetch responder — routes an upstream URL to its real-shape
73
+ * fixture. Anything unmatched returns an empty-success envelope, which is the
74
+ * benign default for the optional sub-calls inside `apimapper_onboarding`.
75
+ */
76
+ export declare function canonicalFetchResponder(url: string): CannedResponse;
77
+ /**
78
+ * Strip every embedded structured-meta marker from a text block. What remains
79
+ * is the human/LLM-readable text a marker-aware host (the WootsUp Chat UI)
80
+ * presents after extracting the marker into a Rich Card.
81
+ */
82
+ export declare function stripStructuredMeta(text: string): string;
83
+ /**
84
+ * Replay the canonical sequence and measure total token output.
85
+ *
86
+ * @param tools the registered apimapper tools map (name → tool)
87
+ * @param fetchResponder maps each upstream URL to a canned REST response
88
+ * @returns per-tool byte tally + `totalBytes` across the whole sequence
89
+ */
90
+ export declare function runTokenBaseline(tools: Record<string, RegisteredHarnessTool>, fetchResponder: FetchResponder): Promise<TokenBaselineResult>;
91
+ export {};