@wootsup/mcp 0.1.0-rc.8 → 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 +72 -6
  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 +135 -6
  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,149 @@
1
+ // src/modules/apimapper/license-format.ts — W3.1 structuredContent helpers
2
+ //
3
+ // rc.13 Welle 3 (2026-05-20) — extracted from license.ts when the migration
4
+ // to the toolkit's structuredContent builders added the detail builder for
5
+ // license_status.
6
+ //
7
+ // - license_status → detailResult (display="detail").
8
+ // - IA-10 (W3.9): an actionable "Next steps" group.
9
+ //
10
+ // SECURITY: license.ts handles the customer's license KEY. detailResult
11
+ // serializes its payload into `_meta.ui.payload`, so a raw key reaching the
12
+ // builder would leak into the Rich Card. `maskLicenseKey()` runs BEFORE the
13
+ // builder and is the single redaction point — only a short non-secret prefix
14
+ // + length-bracket survives. No builder here ever receives the full key.
15
+ import { detailResult, } from "@getimo/mcp-toolkit";
16
+ /**
17
+ * Mask a license key for display. Keeps only a short, non-secret leading
18
+ * fragment so the user can recognise *which* key is active, then replaces
19
+ * the secret body with a fixed redaction marker. The full key is NEVER
20
+ * returned. An empty/short value returns a plain redaction marker.
21
+ *
22
+ * Examples:
23
+ * "AM-PRO-SECRET12345-DEADBEEF99" → "AM-PRO…•••• (28 chars)"
24
+ * "short" → "•••• (redacted)"
25
+ */
26
+ export function maskLicenseKey(key) {
27
+ if (typeof key !== "string" || key.length === 0)
28
+ return "—";
29
+ // Reveal at most the first 6 chars and only when the key is long enough
30
+ // that the prefix is not the whole secret.
31
+ if (key.length <= 8)
32
+ return "•••• (redacted)";
33
+ const prefix = key.slice(0, 6);
34
+ return `${prefix}…•••• (${key.length} chars)`;
35
+ }
36
+ /**
37
+ * Build a structured detail view for license_status.
38
+ *
39
+ * SECURITY: `lic.license_key`, if present, is routed through
40
+ * `maskLicenseKey()` — the full key value never reaches a DetailEntry, so it
41
+ * cannot land in the content text OR `_meta.ui.payload`.
42
+ *
43
+ * IA-10: a dedicated "Next steps" group carries the license follow-up calls.
44
+ */
45
+ export function buildLicenseDetail(lic) {
46
+ const str = (v) => typeof v === "string"
47
+ ? v
48
+ : typeof v === "number" || typeof v === "boolean"
49
+ ? String(v)
50
+ : null;
51
+ const identityAll = [
52
+ { key: "tier", label: "Tier", value: str(lic.tier) ?? "—", format: "badge" },
53
+ {
54
+ key: "is_valid",
55
+ label: "Valid",
56
+ value: typeof lic.is_valid === "boolean" ? lic.is_valid : null,
57
+ format: "boolean",
58
+ },
59
+ {
60
+ // SECURITY: masked — the full license key never reaches this entry.
61
+ key: "license_key",
62
+ label: "License key",
63
+ value: lic.license_key !== undefined ? maskLicenseKey(lic.license_key) : null,
64
+ format: "code",
65
+ },
66
+ ];
67
+ const identity = identityAll.filter((e) => e.value !== null);
68
+ const validityAll = [
69
+ {
70
+ key: "expires_at",
71
+ label: "Expires",
72
+ value: lic.expires_at === null ? "never" : str(lic.expires_at),
73
+ format: "date",
74
+ },
75
+ {
76
+ key: "days_remaining",
77
+ label: "Days remaining",
78
+ value: lic.days_remaining === null
79
+ ? "n/a"
80
+ : typeof lic.days_remaining === "number"
81
+ ? lic.days_remaining
82
+ : null,
83
+ },
84
+ ];
85
+ const validity = validityAll.filter((e) => e.value !== null);
86
+ const channelAll = [
87
+ {
88
+ key: "beta_channel",
89
+ label: "Beta channel",
90
+ value: typeof lic.beta_channel === "boolean" ? lic.beta_channel : null,
91
+ format: "boolean",
92
+ },
93
+ {
94
+ key: "is_early_access",
95
+ label: "Early access",
96
+ value: typeof lic.is_early_access === "boolean" ? lic.is_early_access : null,
97
+ format: "boolean",
98
+ },
99
+ ];
100
+ const channel = channelAll.filter((e) => e.value !== null);
101
+ const groups = [{ label: "License", entries: identity }];
102
+ if (validity.length > 0)
103
+ groups.push({ label: "Validity", entries: validity });
104
+ // Always show the channel group so the LLM can read beta-channel state even
105
+ // when both flags are absent (defaults surfaced as a hint instead).
106
+ groups.push({
107
+ label: "Release channel",
108
+ entries: channel.length > 0
109
+ ? channel
110
+ : [
111
+ {
112
+ key: "beta_channel",
113
+ label: "Beta channel",
114
+ value: "unknown (call apimapper_license_revalidate)",
115
+ },
116
+ ],
117
+ });
118
+ groups.push({
119
+ // IA-10 (W3.9): actionable next steps in a dedicated group.
120
+ label: "Next steps",
121
+ entries: [
122
+ {
123
+ key: "revalidate",
124
+ label: "Revalidate",
125
+ value: "apimapper_license_revalidate() — force a fresh validation round-trip to the license server",
126
+ },
127
+ {
128
+ key: "beta",
129
+ label: "Beta channel",
130
+ value: "apimapper_license_beta_channel({ enabled }) — opt in/out of beta releases",
131
+ },
132
+ ],
133
+ });
134
+ return detailResult({
135
+ title: lic.tier ? `${lic.tier} license` : "License status",
136
+ subtitle: lic.is_valid === true
137
+ ? "valid"
138
+ : lic.is_valid === false
139
+ ? "invalid"
140
+ : undefined,
141
+ badge: lic.is_valid === true
142
+ ? { text: "valid", variant: "success" }
143
+ : lic.is_valid === false
144
+ ? { text: "invalid", variant: "destructive" }
145
+ : { text: "license", variant: "secondary" },
146
+ groups,
147
+ });
148
+ }
149
+ //# sourceMappingURL=license-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-format.js","sourceRoot":"","sources":["../../../src/modules/apimapper/license-format.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
  /**
3
3
  * Mapped license shape surfaced to MCP callers.
4
4
  *
@@ -22,4 +22,18 @@ export interface MappedLicense {
22
22
  is_early_access?: boolean;
23
23
  discord_user_id?: string | null;
24
24
  }
25
- export declare function registerLicenseTools(server: McpServer): void;
25
+ /**
26
+ * Secret-safe variant of {@link mapLicense}: returns the same mapped shape,
27
+ * but with `license_key` routed through {@link maskLicenseKey} (the single
28
+ * redaction point shared with the detailResult builder).
29
+ *
30
+ * SECURITY (F-5.1, Pass-1 consolidation): the 4 mutating license tools
31
+ * (activate/deactivate/revalidate/refresh) spread the mapped license into a
32
+ * formatResult payload. Spreading raw `mapLicense(...)` leaked the full key
33
+ * into `content[0].text` (LLM channel) and any structured payload — through
34
+ * the gateway (`apimapper_advanced`) these tools are reachable, so the leak
35
+ * is the same severity as a log leak. Every call-site that surfaces the
36
+ * mapped license to a tool result MUST use this helper, not raw `mapLicense`.
37
+ */
38
+ export declare function mapLicenseSafe(d: unknown): MappedLicense;
39
+ export declare function registerLicenseTools(server: ToolRegistrar): void;
@@ -1,7 +1,29 @@
1
1
  import { z } from "zod";
2
- import { formatResult, readOnly, creating, mutating, destructive, } from "@getimo/mcp-toolkit";
2
+ import { formatResult, errorResult, readOnly, mutating, destructive, } from "@getimo/mcp-toolkit";
3
3
  import { request, hintFor } from "./client.js";
4
4
  import { unwrapEntity } from "./envelope.js";
5
+ import { buildLicenseDetail, maskLicenseKey } from "./license-format.js";
6
+ /**
7
+ * Secret-safe variant of {@link mapLicense}: returns the same mapped shape,
8
+ * but with `license_key` routed through {@link maskLicenseKey} (the single
9
+ * redaction point shared with the detailResult builder).
10
+ *
11
+ * SECURITY (F-5.1, Pass-1 consolidation): the 4 mutating license tools
12
+ * (activate/deactivate/revalidate/refresh) spread the mapped license into a
13
+ * formatResult payload. Spreading raw `mapLicense(...)` leaked the full key
14
+ * into `content[0].text` (LLM channel) and any structured payload — through
15
+ * the gateway (`apimapper_advanced`) these tools are reachable, so the leak
16
+ * is the same severity as a log leak. Every call-site that surfaces the
17
+ * mapped license to a tool result MUST use this helper, not raw `mapLicense`.
18
+ */
19
+ export function mapLicenseSafe(d) {
20
+ const m = mapLicense(d);
21
+ // Preserve the field's presence (so consumers can still detect "license
22
+ // key set") while replacing the secret body with the shared mask.
23
+ if (m.license_key !== undefined)
24
+ m.license_key = maskLicenseKey(m.license_key);
25
+ return m;
26
+ }
5
27
  function mapLicense(d) {
6
28
  if (!d || typeof d !== "object")
7
29
  return {};
@@ -38,17 +60,23 @@ export function registerLicenseTools(server) {
38
60
  description: "Fetch the current license tier, expiry, beta-channel state, and feature flags." +
39
61
  "\n\nExample:\n apimapper_license_status({})",
40
62
  inputSchema: {},
41
- annotations: readOnly(),
63
+ annotations: readOnly({ title: "Get License Status", openWorld: true }),
42
64
  }, async () => {
43
65
  const r = await request("/license");
44
66
  if (!r.success) {
45
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: {}, hint: hintFor(r.errorCode) }, true);
67
+ return errorResult({
68
+ message: r.error ?? "license status failed",
69
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
70
+ suggestion: hintFor(r.errorCode),
71
+ details: {},
72
+ });
46
73
  }
47
74
  // PHP nests license blob under `license` (LicenseHandler::getStatus).
48
75
  // Audit: F-A4-06.
49
- return formatResult(mapLicense(unwrapEntity(r.data, "license") ?? r.data), false, {
50
- maxChars: 3000,
51
- });
76
+ // W3.1 detailResult: grouped key-value detail for the Rich Card.
77
+ // SECURITY: buildLicenseDetail masks the license_key before any
78
+ // DetailEntry is constructed — the full key never reaches the payload.
79
+ return buildLicenseDetail(mapLicense(unwrapEntity(r.data, "license") ?? r.data));
52
80
  });
53
81
  // ── apimapper_license_activate ─────────────────────────────────────
54
82
  server.registerTool("apimapper_license_activate", {
@@ -59,23 +87,26 @@ export function registerLicenseTools(server) {
59
87
  license_key: z.string().min(8).describe('License key (e.g., "AM-XXXX-XXXX-XXXX-XXXX")'),
60
88
  email: z.string().email().optional().describe("Account email associated with the key"),
61
89
  },
62
- annotations: creating(),
90
+ // W1.26 (IA-1): license activation is idempotent — calling with the same
91
+ // key yields the same activated state, no duplicate license rows. The
92
+ // matching deactivate is destructive(); activate is its mutating() inverse.
93
+ annotations: mutating({ title: "Activate License", openWorld: true }),
63
94
  }, async ({ license_key, email }) => {
64
95
  const r = await request("/license/activate", { method: "POST", body: JSON.stringify({ license_key, email }) }, { unwrapInnerSuccess: true });
65
96
  if (!r.success) {
66
- return formatResult({
67
- error: r.error,
68
- status: r.status,
69
- errorCode: r.errorCode,
70
- payloadFailed: r.payloadFailed,
71
- context: { email },
72
- hint: r.payloadFailed
97
+ return errorResult({
98
+ message: r.error ?? "license activation failed",
99
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
100
+ suggestion: r.payloadFailed
73
101
  ? "License-server rejected the key. Verify the key + email pairing and activation slots."
74
102
  : hintFor(r.errorCode),
75
- }, true);
103
+ details: { email, payloadFailed: r.payloadFailed },
104
+ });
76
105
  }
77
106
  // Audit: F-A4-06.
78
- return formatResult({ activated: true, ...mapLicense(unwrapEntity(r.data, "license") ?? r.data) }, false, { maxChars: 2500 });
107
+ // SECURITY F-5.1: mapLicenseSafe masks `license_key` before the spread
108
+ // so the full key cannot reach `content[0].text` or any structured payload.
109
+ return formatResult({ activated: true, ...mapLicenseSafe(unwrapEntity(r.data, "license") ?? r.data) }, false, { maxChars: 2500 });
79
110
  });
80
111
  // ── apimapper_license_deactivate ───────────────────────────────────
81
112
  server.registerTool("apimapper_license_deactivate", {
@@ -88,7 +119,7 @@ export function registerLicenseTools(server) {
88
119
  .default(false)
89
120
  .describe("Must be true to execute. Ask user for confirmation first."),
90
121
  },
91
- annotations: destructive(),
122
+ annotations: destructive({ title: "Deactivate License", openWorld: true }),
92
123
  }, async ({ confirm }) => {
93
124
  if (!confirm) {
94
125
  return formatResult({
@@ -100,11 +131,17 @@ export function registerLicenseTools(server) {
100
131
  }
101
132
  const r = await request("/license/deactivate", { method: "POST" });
102
133
  if (!r.success) {
103
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: {}, hint: hintFor(r.errorCode) }, true);
134
+ return errorResult({
135
+ message: r.error ?? "license deactivation failed",
136
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
137
+ suggestion: hintFor(r.errorCode),
138
+ details: {},
139
+ });
104
140
  }
105
141
  // Audit: F-A4-06 partial — deactivate may or may not surface a license
106
142
  // blob; unwrap defensively.
107
- return formatResult({ deactivated: true, ...mapLicense(unwrapEntity(r.data, "license") ?? r.data) }, false, { maxChars: 2000 });
143
+ // SECURITY F-5.1: mapLicenseSafe masks `license_key` before the spread.
144
+ return formatResult({ deactivated: true, ...mapLicenseSafe(unwrapEntity(r.data, "license") ?? r.data) }, false, { maxChars: 2000 });
108
145
  });
109
146
  // ── apimapper_license_revalidate ───────────────────────────────────
110
147
  server.registerTool("apimapper_license_revalidate", {
@@ -112,21 +149,20 @@ export function registerLicenseTools(server) {
112
149
  description: "Force a fresh validation call to the license server (network round-trip)." +
113
150
  "\n\nExample:\n apimapper_license_revalidate({})",
114
151
  inputSchema: {},
115
- annotations: mutating(),
152
+ annotations: mutating({ title: "Revalidate License", openWorld: true }),
116
153
  }, async () => {
117
154
  const r = await request("/license/revalidate", { method: "POST" }, { unwrapInnerSuccess: true });
118
155
  if (!r.success) {
119
- return formatResult({
120
- error: r.error,
121
- status: r.status,
122
- errorCode: r.errorCode,
123
- payloadFailed: r.payloadFailed,
124
- context: {},
125
- hint: hintFor(r.errorCode),
126
- }, true);
156
+ return errorResult({
157
+ message: r.error ?? "license revalidation failed",
158
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
159
+ suggestion: hintFor(r.errorCode),
160
+ details: { payloadFailed: r.payloadFailed },
161
+ });
127
162
  }
128
163
  // Audit: F-A4-06.
129
- return formatResult({ revalidated: true, ...mapLicense(unwrapEntity(r.data, "license") ?? r.data) }, false, { maxChars: 2500 });
164
+ // SECURITY F-5.1: mapLicenseSafe masks `license_key` before the spread.
165
+ return formatResult({ revalidated: true, ...mapLicenseSafe(unwrapEntity(r.data, "license") ?? r.data) }, false, { maxChars: 2500 });
130
166
  });
131
167
  // ── apimapper_license_refresh ──────────────────────────────────────
132
168
  server.registerTool("apimapper_license_refresh", {
@@ -135,14 +171,20 @@ export function registerLicenseTools(server) {
135
171
  "Use after manually editing the license_key field." +
136
172
  "\n\nExample:\n apimapper_license_refresh({})",
137
173
  inputSchema: {},
138
- annotations: mutating(),
174
+ annotations: mutating({ title: "Refresh License", openWorld: true }),
139
175
  }, async () => {
140
176
  const r = await request("/license/refresh", { method: "POST" });
141
177
  if (!r.success) {
142
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: {}, hint: hintFor(r.errorCode) }, true);
178
+ return errorResult({
179
+ message: r.error ?? "license refresh failed",
180
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
181
+ suggestion: hintFor(r.errorCode),
182
+ details: {},
183
+ });
143
184
  }
144
185
  // Audit: F-A4-06.
145
- return formatResult({ refreshed: true, ...mapLicense(unwrapEntity(r.data, "license") ?? r.data) }, false, { maxChars: 2500 });
186
+ // SECURITY F-5.1: mapLicenseSafe masks `license_key` before the spread.
187
+ return formatResult({ refreshed: true, ...mapLicenseSafe(unwrapEntity(r.data, "license") ?? r.data) }, false, { maxChars: 2500 });
146
188
  });
147
189
  // ── apimapper_license_beta_channel ─────────────────────────────────
148
190
  server.registerTool("apimapper_license_beta_channel", {
@@ -152,19 +194,25 @@ export function registerLicenseTools(server) {
152
194
  inputSchema: {
153
195
  enabled: z.boolean().describe("true to opt-in to beta releases, false to revert to stable"),
154
196
  },
155
- annotations: mutating(),
197
+ annotations: mutating({ title: "Toggle Beta Channel", openWorld: true }),
156
198
  }, async ({ enabled }) => {
157
199
  const r = await request("/license/beta-channel", {
158
200
  method: "POST",
159
201
  body: JSON.stringify({ enabled }),
160
202
  });
161
203
  if (!r.success) {
162
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: { enabled }, hint: hintFor(r.errorCode) }, true);
204
+ return errorResult({
205
+ message: r.error ?? "beta channel toggle failed",
206
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
207
+ suggestion: hintFor(r.errorCode),
208
+ details: { enabled },
209
+ });
163
210
  }
164
211
  // PHP toggleBetaChannel returns flat {beta_channel, message} — no
165
- // 'license' key here, so we read mapLicense() at the top level. Audit:
166
- // F-A4-07 (anomalous shape, works by happenstance).
167
- return formatResult({ updated: true, beta_channel: enabled, ...mapLicense(r.data) }, false, { maxChars: 2500 });
212
+ // 'license' key here, so we read mapLicenseSafe() at the top level.
213
+ // Audit: F-A4-07 (anomalous shape, works by happenstance).
214
+ // SECURITY F-5.1: mapLicenseSafe masks `license_key` before the spread.
215
+ return formatResult({ updated: true, beta_channel: enabled, ...mapLicenseSafe(r.data) }, false, { maxChars: 2500 });
168
216
  });
169
217
  }
170
218
  //# sourceMappingURL=license.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../../../src/modules/apimapper/license.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../../src/modules/apimapper/license.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 registerLocalSourceTools(server: McpServer): void;
1
+ import type { ToolRegistrar } from "./gateway/capturing-server.js";
2
+ export declare function registerLocalSourceTools(server: ToolRegistrar): void;
@@ -1,7 +1,17 @@
1
1
  import { z } from "zod";
2
- import { formatResult, readOnly } from "@getimo/mcp-toolkit";
2
+ import { formatResult, errorResult, readOnly } from "@getimo/mcp-toolkit";
3
3
  import { request, hintFor } from "./client.js";
4
4
  import { encodePathPreservingSlashes } from "./normalizers.js";
5
+ // rc.13 Welle 3 (2026-05-20) — error branches upgraded to the toolkit's
6
+ // errorResult builder. Object-passthrough judgment (W3.1 note 2): every
7
+ // local-source SUCCESS payload is arbitrary-shape data with NO stable column
8
+ // or field schema — local_source_types returns provider-defined type
9
+ // descriptors, local_source_query returns WP posts / Joomla articles with
10
+ // per-content-type field sets, local_source_schema / local_source_filter_options
11
+ // return free-form schema/option objects. Forcing any onto tableResult /
12
+ // detailResult would mean inventing a column/field map that drifts the moment
13
+ // a content type adds a field. So all four KEEP formatResult on success; only
14
+ // the ERROR branch upgrades to errorResult (display="error", isError:true).
5
15
  export function registerLocalSourceTools(server) {
6
16
  // ── apimapper_local_source_types ───────────────────────────────────
7
17
  server.registerTool("apimapper_local_source_types", {
@@ -10,11 +20,16 @@ export function registerLocalSourceTools(server) {
10
20
  "Local sources don't need a connection — they query WP/Joomla internal data." +
11
21
  "\n\nExample:\n apimapper_local_source_types({})",
12
22
  inputSchema: {},
13
- annotations: readOnly(),
23
+ annotations: readOnly({ title: "List Local Source Types", openWorld: true }),
14
24
  }, async () => {
15
25
  const r = await request("/local-sources/types");
16
26
  if (!r.success) {
17
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: {}, hint: hintFor(r.errorCode) }, true);
27
+ return errorResult({
28
+ message: r.error ?? "local source types failed",
29
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
30
+ suggestion: hintFor(r.errorCode),
31
+ details: {},
32
+ });
18
33
  }
19
34
  const types = Array.isArray(r.data?.types) ? r.data.types : [];
20
35
  return formatResult({ count: types.length, types }, false, { maxChars: 4000 });
@@ -34,11 +49,16 @@ export function registerLocalSourceTools(server) {
34
49
  .regex(/^[a-z]+\/[a-z0-9_-]+$/, "Must be in the form 'platform/type', e.g., 'wordpress/posts'")
35
50
  .describe('Local source type id in "platform/type" form (e.g., "wordpress/posts", "joomla/articles"). Use apimapper_local_source_types.'),
36
51
  },
37
- annotations: readOnly(),
52
+ annotations: readOnly({ title: "Get Local Source Schema", openWorld: true }),
38
53
  }, async ({ type_id }) => {
39
54
  const r = await request(`/local-sources/schema/${encodePathPreservingSlashes(type_id)}`);
40
55
  if (!r.success) {
41
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: { type_id }, hint: hintFor(r.errorCode) }, true);
56
+ return errorResult({
57
+ message: r.error ?? "local source schema failed",
58
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
59
+ suggestion: hintFor(r.errorCode),
60
+ details: { type_id },
61
+ });
42
62
  }
43
63
  return formatResult(r.data ?? {}, false, { maxChars: 4000 });
44
64
  });
@@ -57,26 +77,30 @@ export function registerLocalSourceTools(server) {
57
77
  .regex(/^[a-z_]+$/, "Must be lowercase with underscores")
58
78
  .describe('Filter field name (e.g., "category", "tag", "author")'),
59
79
  },
60
- annotations: readOnly(),
80
+ annotations: readOnly({ title: "Get Local Source Filter Options", openWorld: true }),
61
81
  }, async ({ type_id, filter_name }) => {
62
82
  const r = await request(`/local-sources/filter-options/${encodePathPreservingSlashes(type_id)}/${encodeURIComponent(filter_name)}`);
63
83
  if (!r.success) {
64
- return formatResult({
65
- error: r.error,
66
- status: r.status,
67
- errorCode: r.errorCode,
68
- context: { type_id, filter_name },
69
- hint: hintFor(r.errorCode),
70
- }, true);
84
+ return errorResult({
85
+ message: r.error ?? "local source filter options failed",
86
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
87
+ suggestion: hintFor(r.errorCode),
88
+ details: { type_id, filter_name },
89
+ });
71
90
  }
72
91
  return formatResult(r.data ?? {}, false, { maxChars: 4000 });
73
92
  });
74
93
  // ── apimapper_local_source_query ───────────────────────────────────
75
94
  server.registerTool("apimapper_local_source_query", {
76
95
  title: "Query Local Source Data",
77
- description: "Execute a query against a local source and return data. Body uses camelCase " +
78
- "`contentType` (FlowExecutor node-data convention)." +
79
- "\n\nExample:\n apimapper_local_source_query({ contentType: 'wordpress/posts', limit: 10 })",
96
+ // rc.10 A7 (2026-05-19) anti-thrash for AI agents: the `offset`
97
+ // parameter exists for UI pagers; AI agents should prefer a larger
98
+ // `limit` over offset-loops because most installs fit in one page.
99
+ description: "Execute a query against a local source (WP posts/pages, Joomla articles, etc.) and return " +
100
+ "the matching items in one call. Body uses camelCase `contentType` (FlowExecutor node-data " +
101
+ "convention). For AI agents: prefer a higher `limit` (up to 500) over iterating with " +
102
+ "`offset` — most installs fit comfortably in a single page." +
103
+ "\n\nExample:\n apimapper_local_source_query({ contentType: 'wordpress/posts', limit: 100 })",
80
104
  inputSchema: {
81
105
  content_type: z
82
106
  .string()
@@ -86,12 +110,12 @@ export function registerLocalSourceTools(server) {
86
110
  .record(z.string(), z.unknown())
87
111
  .optional()
88
112
  .describe('Filter values (e.g., {"category":"news","status":"publish"})'),
89
- limit: z.number().min(1).max(500).default(50).describe("Max items (1-500)"),
90
- offset: z.number().min(0).default(0).describe("Offset for pagination"),
113
+ limit: z.number().min(1).max(500).default(50).describe("Max items (1-500). Prefer a single larger limit over offset-iteration — most installs fit in one page."),
114
+ offset: z.number().min(0).default(0).describe("Offset for pagination. Intended for UI pagers; AI agents should prefer a larger `limit` instead of offset-loops because the data set is bounded and a single call returns the result."),
91
115
  orderby: z.string().optional().describe('Order field (e.g., "date","title")'),
92
116
  order: z.enum(["asc", "desc"]).default("desc").describe("Order direction"),
93
117
  },
94
- annotations: readOnly(),
118
+ annotations: readOnly({ title: "Query Local Source", openWorld: true }),
95
119
  }, async ({ content_type, filters, limit, offset, orderby, order }) => {
96
120
  const body = {
97
121
  contentType: content_type, // camelCase wire-format key
@@ -106,20 +130,24 @@ export function registerLocalSourceTools(server) {
106
130
  const r = await request("/local-sources/query", { method: "POST", body: JSON.stringify(body) });
107
131
  if (!r.success) {
108
132
  // F-A5-02: on 403 feature-gate response the PHP body carries
109
- // `error_code` + `upgrade` hints — surface them to the agent so it
110
- // can route the user to the upgrade flow instead of generic error.
133
+ // `error_code` + `upgrade` hints — surface them to the agent (in the
134
+ // errorResult details) so it can route the user to the upgrade flow
135
+ // instead of a generic error.
111
136
  const dataObj = r.data && typeof r.data === "object"
112
137
  ? r.data
113
138
  : {};
114
- return formatResult({
115
- error: r.error,
116
- status: r.status,
117
- errorCode: r.errorCode,
118
- error_code: typeof dataObj.error_code === "string" ? dataObj.error_code : undefined,
119
- upgrade: dataObj.upgrade,
120
- context: { content_type, limit, offset },
121
- hint: hintFor(r.errorCode),
122
- }, true);
139
+ return errorResult({
140
+ message: r.error ?? "local source query failed",
141
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
142
+ suggestion: hintFor(r.errorCode),
143
+ details: {
144
+ content_type,
145
+ limit,
146
+ offset,
147
+ error_code: typeof dataObj.error_code === "string" ? dataObj.error_code : undefined,
148
+ upgrade: dataObj.upgrade,
149
+ },
150
+ });
123
151
  }
124
152
  const items = Array.isArray(r.data?.items) ? r.data.items : [];
125
153
  return formatResult({
@@ -1 +1 @@
1
- {"version":3,"file":"local-sources.js","sourceRoot":"","sources":["../../../src/modules/apimapper/local-sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-sources.js","sourceRoot":"","sources":["../../../src/modules/apimapper/local-sources.ts"],"names":[],"mappings":"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"}