@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
@@ -8,47 +8,95 @@
8
8
  // SECURITY: All credential responses are routed through `sanitizeSecrets()`
9
9
  // in client.ts → request({sanitize:true}). Even if the PHP backend
10
10
  // regresses and returns auth_data, the MCP layer never leaks it. See
11
- // credential-sanitizer.ts.
11
+ // credential-sanitizer.ts. The sanitize happens INSIDE `request()` before
12
+ // the result is returned — so `r.data` is already redacted by the time any
13
+ // structuredContent builder serializes it into `_meta.ui.payload`.
14
+ //
15
+ // rc.13 Welle 3 (2026-05-20) — heavy read tools migrated to the toolkit's
16
+ // structuredContent builders. Migration is purely additive: every builder
17
+ // preserves the text `content` block and adds `_meta.ui` for Rich Card
18
+ // rendering.
19
+ // - credential_list → tableResult (display="data-table"); T1 (W3.2)
20
+ // carries explicit compactColumns + compactMap; IA-7 keeps the opaque
21
+ // `id` column llmOnly; IA-10 puts the next-step guidance in the footer.
22
+ // - credential_get → detailResult (display="detail") with an IA-10
23
+ // "Next steps" group — sanitised, secret-free metadata only.
24
+ // - mutating tools (create/update/delete/link/oauth_authorize_begin) keep
25
+ // their formatResult success payloads (small confirmations, and
26
+ // credential_delete's preview is consumed via raw JSON.parse by the
27
+ // Wave-2A pin tests); only their ERROR branch upgrades to errorResult.
28
+ // - all error returns → errorResult (display="error", isError:true).
29
+ // The column constants, row maps, detail builder and next-step strings live
30
+ // in the sibling credentials-format.ts so this module stays a lean
31
+ // tool-registration surface.
12
32
  import { z } from "zod";
13
- import { formatResult, autoFormatTable, readOnly, creating, mutating, destructive, } from "@getimo/mcp-toolkit";
33
+ import { formatResult, tableResult, errorResult, readOnly, creating, mutating, destructive, elicitChoice, } from "@getimo/mcp-toolkit";
14
34
  import { request, hintFor } from "./client.js";
15
- export function registerCredentialTools(server) {
35
+ import { toRows } from "./types.js";
36
+ import { CREDENTIAL_TABLE_COLUMNS, CREDENTIAL_COMPACT_COLUMNS, CREDENTIAL_LIST_NEXT_STEPS, mapCredentialRow, compactCredentialRow, buildCredentialDetail, } from "./credentials-format.js";
37
+ import { ambiguityFallbackError, } from "./elicitation.js";
38
+ /** The provider slug of an OAuth credential — `oauth_provider` then `provider`. */
39
+ function credentialProvider(c) {
40
+ return c.oauth_provider ?? c.provider ?? undefined;
41
+ }
42
+ /**
43
+ * Register the credential CRUD + OAuth tools.
44
+ *
45
+ * @param server the tool registrar (essentials forward, rest captured).
46
+ * @param elicitation optional elicitation capability (the real McpServer, or
47
+ * any `{ server: { elicitInput } }`). Supplied only by the host wiring in
48
+ * index.ts. When omitted, `oauth_authorize_begin` falls back to a
49
+ * structured error on genuine ambiguity instead of prompting.
50
+ */
51
+ export function registerCredentialTools(server, elicitation) {
16
52
  // ── apimapper_credential_list ──────────────────────────────────────
17
53
  server.registerTool("apimapper_credential_list", {
18
54
  title: "List Credentials",
55
+ // rc.10 A6 (2026-05-19) — explicit hint that auth_type is a
56
+ // CLIENT-SIDE filter applied after the server returns the full
57
+ // set. Previously the AI made repeat calls with different
58
+ // auth_type values expecting different data — they were always
59
+ // the same set, just filtered locally.
19
60
  description: "List all stored credentials (sanitised — secrets omitted). " +
20
- "Use apimapper_credential_get for one credential's metadata." +
21
- "\n\nExample:\n apimapper_credential_list({})",
61
+ "The `auth_type` parameter is a CLIENT-SIDE filter — the server returns the same set " +
62
+ "regardless of `auth_type`. Calling repeatedly with different `auth_type` values returns " +
63
+ "identical underlying data; a single call returns everything. " +
64
+ "Use apimapper_credential_get for one credential's full metadata." +
65
+ "\n\nExample:\n apimapper_credential_list({}) // returns all credentials\n" +
66
+ " apimapper_credential_list({ auth_type: 'oauth2_code' }) // local filter only",
22
67
  inputSchema: {
23
68
  auth_type: z
24
69
  .enum(["api_key", "bearer", "basic_auth", "oauth2_code", "oauth2_cc", "all"])
25
70
  .default("all")
26
- .describe("Filter by auth_type (server wire-format field)"),
71
+ .describe("Filter by auth_type (server wire-format field). Applied CLIENT-SIDE after the server returns all credentials — calling with different values does NOT change what the server returns."),
27
72
  },
28
- annotations: readOnly(),
73
+ annotations: readOnly({ title: "List Credentials", openWorld: true }),
29
74
  }, async ({ auth_type }) => {
30
75
  const r = await request("/credentials", {}, { sanitize: true });
31
76
  if (!r.success) {
32
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: { auth_type }, hint: hintFor(r.errorCode) }, true);
77
+ return errorResult({
78
+ message: r.error ?? "credential list failed",
79
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
80
+ suggestion: hintFor(r.errorCode),
81
+ details: { auth_type },
82
+ });
33
83
  }
34
84
  const raw = Array.isArray(r.data?.credentials) ? r.data.credentials : [];
35
85
  const items = auth_type === "all" ? raw : raw.filter((c) => c.auth_type === auth_type);
36
- return autoFormatTable(items.map((c) => ({
37
- id: c.id,
38
- name: c.name,
39
- auth_type: c.auth_type,
40
- provider: c.oauth_provider || c.provider || "",
41
- updated_at: c.updated_at || "—",
42
- })), {
43
- columns: [
44
- { key: "id", label: "ID", width: 28 },
45
- { key: "name", label: "NAME", width: 28 },
46
- { key: "auth_type", label: "AUTH_TYPE", width: 14 },
47
- { key: "provider", label: "PROVIDER", width: 16 },
48
- { key: "updated_at", label: "UPDATED", width: 22 },
49
- ],
86
+ // W3.1 tableResult: ASCII table for the LLM + typed DataTable payload
87
+ // for the Rich Card. T1 (W3.2): explicit compactColumns/compactMap drop
88
+ // PROVIDER/UPDATED at 21+ rows. IA-7: id stays llmOnly. IA-10: the
89
+ // footer carries the next-step guidance.
90
+ // SECURITY: `items` is the sanitised set `request` was called with
91
+ // `{ sanitize: true }`, so any leaked auth_data was already stripped
92
+ // before it could reach the tableResult UI payload.
93
+ return tableResult(toRows(items), {
94
+ columns: CREDENTIAL_TABLE_COLUMNS,
95
+ compactColumns: CREDENTIAL_COMPACT_COLUMNS,
96
+ map: mapCredentialRow,
97
+ compactMap: compactCredentialRow,
50
98
  header: (n) => `${n} credentials`,
51
- footer: "Use apimapper_credential_get <id> for metadata. Secrets are NEVER returned.",
99
+ footer: CREDENTIAL_LIST_NEXT_STEPS,
52
100
  });
53
101
  });
54
102
  // ── apimapper_credential_get ───────────────────────────────────────
@@ -61,31 +109,35 @@ export function registerCredentialTools(server) {
61
109
  inputSchema: {
62
110
  id: z.string().describe('Credential ID (e.g., "cred_abc123"). Use apimapper_credential_list to find.'),
63
111
  },
64
- annotations: readOnly(),
112
+ annotations: readOnly({ title: "Get Credential", openWorld: true }),
65
113
  }, async ({ id }) => {
66
114
  const r = await request(`/credentials/${encodeURIComponent(id)}`, {}, { sanitize: true });
67
115
  if (!r.success) {
68
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: { id }, hint: hintFor(r.errorCode) }, true);
116
+ return errorResult({
117
+ message: r.error ?? "credential get failed",
118
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
119
+ suggestion: hintFor(r.errorCode),
120
+ details: { id },
121
+ });
69
122
  }
70
123
  // Server may return either `credential: {...}` envelope or bare object.
71
124
  const cred = r.data && typeof r.data === "object" && "credential" in r.data
72
125
  ? r.data.credential
73
126
  : r.data;
74
127
  if (!cred || Object.keys(cred).length === 0) {
75
- return formatResult({ error: "credential not found", status: r.status, context: { id }, hint: hintFor("not_found") }, true);
128
+ return errorResult({
129
+ message: "credential not found",
130
+ code: r.status ? String(r.status) : "not_found",
131
+ suggestion: hintFor("not_found"),
132
+ details: { id },
133
+ });
76
134
  }
77
- const mapped = {
78
- id: cred.id,
79
- name: cred.name,
80
- auth_type: cred.auth_type,
81
- oauth_provider: cred.oauth_provider || null,
82
- oauth_token_expires_at: cred.oauth_token_expires_at || null,
83
- provider: cred.provider || null,
84
- created_at: cred.created_at,
85
- updated_at: cred.updated_at,
86
- note: "Secret fields stripped at MCP boundary. To inspect a secret, open API Mapper → Credentials in your admin UI.",
87
- };
88
- return formatResult(mapped, false, { maxChars: 3000 });
135
+ // W3.1 detailResult: grouped key-value detail for the Rich Card.
136
+ // SECURITY: `cred` is already sanitised (request `{ sanitize: true }`)
137
+ // and the `Credential` type omits `auth_data` — buildCredentialDetail
138
+ // surfaces only non-secret metadata. IA-7: opaque IDs are copyable code
139
+ // entries. IA-10: a dedicated "Next steps" group carries follow-ups.
140
+ return buildCredentialDetail(id, cred);
89
141
  });
90
142
  // ── apimapper_credential_create ────────────────────────────────────
91
143
  server.registerTool("apimapper_credential_create", {
@@ -109,17 +161,16 @@ export function registerCredentialTools(server) {
109
161
  provider: z.string().optional().describe('Generic provider slug for credential-by-provider filtering'),
110
162
  oauth_token_expires_at: z.string().optional().describe('ISO timestamp when access token expires (oauth2_* only)'),
111
163
  },
112
- annotations: creating(),
164
+ annotations: creating({ title: "Create Credential", openWorld: true }),
113
165
  }, async (input) => {
114
166
  const r = await request("/credentials", { method: "POST", body: JSON.stringify(input) }, { sanitize: true });
115
167
  if (!r.success) {
116
- return formatResult({
117
- error: r.error,
118
- status: r.status,
119
- errorCode: r.errorCode,
120
- context: { name: input.name, auth_type: input.auth_type },
121
- hint: hintFor(r.errorCode),
122
- }, true);
168
+ return errorResult({
169
+ message: r.error ?? "credential create failed",
170
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
171
+ suggestion: hintFor(r.errorCode),
172
+ details: { name: input.name, auth_type: input.auth_type },
173
+ });
123
174
  }
124
175
  const cred = r.data?.credential;
125
176
  return formatResult({
@@ -144,11 +195,16 @@ export function registerCredentialTools(server) {
144
195
  'Examples: {"name":"Renamed"}, {"auth_data":{"api_key":"newkey"}}, ' +
145
196
  '{"oauth_token_expires_at":"2026-12-31T00:00:00Z"}'),
146
197
  },
147
- annotations: mutating(),
198
+ annotations: mutating({ title: "Update Credential", openWorld: true }),
148
199
  }, async ({ id, patch }) => {
149
200
  const r = await request(`/credentials/${encodeURIComponent(id)}`, { method: "PUT", body: JSON.stringify(patch) }, { sanitize: true });
150
201
  if (!r.success) {
151
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: { id }, hint: hintFor(r.errorCode) }, true);
202
+ return errorResult({
203
+ message: r.error ?? "credential update failed",
204
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
205
+ suggestion: hintFor(r.errorCode),
206
+ details: { id },
207
+ });
152
208
  }
153
209
  const cred = r.data?.credential;
154
210
  return formatResult({
@@ -172,10 +228,13 @@ export function registerCredentialTools(server) {
172
228
  .default(false)
173
229
  .describe("Must be true to execute. On confirm:false, returns a preview."),
174
230
  },
175
- annotations: destructive(),
231
+ annotations: destructive({ title: "Delete Credential", openWorld: true }),
176
232
  }, async ({ id, confirm }) => {
177
233
  if (!confirm) {
178
- // Preview: fetch metadata for informed confirmation.
234
+ // Preview: fetch metadata for informed confirmation. Stays on
235
+ // formatResult — the Wave-2A pin tests consume this preview via a
236
+ // raw JSON.parse of content[0].text; a structured builder would
237
+ // append the structured-meta marker and break that contract.
179
238
  const preview = await request(`/credentials/${encodeURIComponent(id)}`, {}, { sanitize: true });
180
239
  // Guard explicitly on preview.success — the previous type-narrowing
181
240
  // was unsound (cast to Credential | undefined relied on `cred` being
@@ -202,7 +261,12 @@ export function registerCredentialTools(server) {
202
261
  }
203
262
  const r = await request(`/credentials/${encodeURIComponent(id)}`, { method: "DELETE" });
204
263
  if (!r.success) {
205
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: { id }, hint: hintFor(r.errorCode) }, true);
264
+ return errorResult({
265
+ message: r.error ?? "credential delete failed",
266
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
267
+ suggestion: hintFor(r.errorCode),
268
+ details: { id },
269
+ });
206
270
  }
207
271
  return formatResult({ deleted: true, id }, false, { maxChars: 1500 });
208
272
  });
@@ -216,7 +280,7 @@ export function registerCredentialTools(server) {
216
280
  connection_id: z.string().describe("Connection ID. Use apimapper_connection_list."),
217
281
  credential_id: z.string().describe("Credential ID. Use apimapper_credential_list."),
218
282
  },
219
- annotations: mutating(),
283
+ annotations: mutating({ title: "Link Credential", openWorld: true }),
220
284
  }, async ({ connection_id, credential_id }) => {
221
285
  // Connection wire = snake_case (verified vs ConnectionProbeCore.php:89).
222
286
  // PHP fromControllerResponse(_, 'connection') → {success, connection:{…}}.
@@ -228,16 +292,14 @@ export function registerCredentialTools(server) {
228
292
  body: JSON.stringify({ credential_id }),
229
293
  }, { unwrapInnerSuccess: true });
230
294
  if (!r.success) {
231
- return formatResult({
232
- error: r.error,
233
- status: r.status,
234
- errorCode: r.errorCode,
235
- payloadFailed: r.payloadFailed,
236
- context: { connection_id, credential_id },
237
- hint: r.payloadFailed
295
+ return errorResult({
296
+ message: r.error ?? "credential link failed",
297
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
298
+ suggestion: r.payloadFailed
238
299
  ? "Connection update returned success:false — verify the connection_id exists and credential_id is valid."
239
300
  : hintFor(r.errorCode),
240
- }, true);
301
+ details: { connection_id, credential_id, payloadFailed: r.payloadFailed },
302
+ });
241
303
  }
242
304
  const conn = r.data && typeof r.data === "object" && "connection" in r.data
243
305
  ? r.data.connection
@@ -261,19 +323,88 @@ export function registerCredentialTools(server) {
261
323
  title: "Begin OAuth2 Authorize Flow",
262
324
  description: "Initiate the OAuth2 authorization-code flow for a credential. Returns the upstream " +
263
325
  "authorize URL the user must visit in a browser to grant consent. " +
264
- "After consent: call apimapper_credential_get to verify the credential was populated." +
265
- "\n\nExample:\n apimapper_oauth_authorize_begin({ credential_id: 'cred_google_drive' })",
326
+ "After consent: call apimapper_credential_get to verify the credential was populated. " +
327
+ "If `credential_id` is omitted, supply `provider` to scope the lookup — when exactly " +
328
+ "one OAuth credential matches it is used automatically; when several match the user " +
329
+ "is asked to pick." +
330
+ "\n\nExample:\n apimapper_oauth_authorize_begin({ credential_id: 'cred_google_drive' })\n" +
331
+ " apimapper_oauth_authorize_begin({ provider: 'google' }) // resolves by provider",
266
332
  inputSchema: {
267
333
  credential_id: z
268
334
  .string()
269
- .describe("Credential ID (must be type oauth2_code). Use apimapper_credential_list."),
335
+ .optional()
336
+ .describe("Credential ID (must be type oauth2_code). Use apimapper_credential_list. " +
337
+ "Omit to resolve by `provider` instead."),
338
+ provider: z
339
+ .string()
340
+ .optional()
341
+ .describe('OAuth provider slug to resolve the credential when `credential_id` is omitted ' +
342
+ '(e.g., "google", "meta"). Match is case-insensitive against the credential\'s ' +
343
+ "oauth_provider / provider field."),
270
344
  scopes: z
271
345
  .array(z.string())
272
346
  .optional()
273
347
  .describe('Override scopes (e.g., ["https://www.googleapis.com/auth/spreadsheets.readonly"])'),
274
348
  },
275
- annotations: creating(),
276
- }, async ({ credential_id, scopes }) => {
349
+ annotations: creating({ title: "Begin OAuth Authorization", openWorld: true }),
350
+ }, async ({ credential_id, provider, scopes }) => {
351
+ // W3.6 — resolve the credential when `credential_id` is omitted.
352
+ // Exactly 1 OAuth credential matching `provider` → auto-pick;
353
+ // >1 → elicitChoice; 0 → structured error; elicitChoice null
354
+ // (unsupported client / declined) → structured candidate-list error.
355
+ let resolvedCredentialId = credential_id;
356
+ if (!resolvedCredentialId) {
357
+ const lr = await request("/credentials", {}, { sanitize: true });
358
+ if (!lr.success) {
359
+ return errorResult({
360
+ message: lr.error ?? "credential lookup failed",
361
+ code: lr.errorCode ?? (lr.status ? String(lr.status) : undefined),
362
+ suggestion: hintFor(lr.errorCode),
363
+ details: { provider },
364
+ });
365
+ }
366
+ const all = Array.isArray(lr.data?.credentials) ? lr.data.credentials : [];
367
+ // OAuth authorize-code flow only applies to oauth2_code credentials.
368
+ const oauthCreds = all.filter((c) => c.auth_type === "oauth2_code");
369
+ const matches = provider
370
+ ? oauthCreds.filter((c) => credentialProvider(c)?.toLowerCase() === provider.toLowerCase())
371
+ : oauthCreds;
372
+ if (matches.length === 0) {
373
+ return errorResult({
374
+ message: provider
375
+ ? `No oauth2_code credential matches provider "${provider}".`
376
+ : "No oauth2_code credential found.",
377
+ code: "credential_not_found",
378
+ suggestion: "Create one with apimapper_credential_create (auth_type: 'oauth2_code'), " +
379
+ "or pass an explicit `credential_id`.",
380
+ details: { provider },
381
+ });
382
+ }
383
+ if (matches.length === 1) {
384
+ resolvedCredentialId = matches[0].id;
385
+ }
386
+ else {
387
+ const candidates = matches.map((c) => ({
388
+ id: c.id,
389
+ label: c.name,
390
+ }));
391
+ const picked = elicitation
392
+ ? await elicitChoice(elicitation, provider
393
+ ? `Several "${provider}" OAuth credentials exist. Pick the one to authorize.`
394
+ : "Several OAuth credentials exist. Pick the one to authorize.", candidates.map((c) => c.id))
395
+ : null;
396
+ if (picked === null) {
397
+ return ambiguityFallbackError({
398
+ code: "credential_ambiguous",
399
+ paramName: "credential_id",
400
+ what: "OAuth credentials",
401
+ candidates,
402
+ extraDetails: { provider },
403
+ });
404
+ }
405
+ resolvedCredentialId = picked;
406
+ }
407
+ }
277
408
  // Wire-key alignment with PHP OAuthController (audit F-A3-01 + F-A3-02):
278
409
  // - Request: PHP reads `existing_credential_id` (not `credential_id`).
279
410
  // Wave 1B accepted both, but sending the canonical key directly is
@@ -284,17 +415,67 @@ export function registerCredentialTools(server) {
284
415
  // before or after the alias ships.
285
416
  const r = await request("/oauth/authorize", {
286
417
  method: "POST",
287
- body: JSON.stringify({ existing_credential_id: credential_id, scopes }),
418
+ body: JSON.stringify({ existing_credential_id: resolvedCredentialId, scopes }),
288
419
  });
289
420
  if (!r.success) {
290
- return formatResult({ error: r.error, status: r.status, errorCode: r.errorCode, context: { credential_id }, hint: hintFor(r.errorCode) }, true);
421
+ return errorResult({
422
+ message: r.error ?? "oauth authorize failed",
423
+ code: r.errorCode ?? (r.status ? String(r.status) : undefined),
424
+ suggestion: hintFor(r.errorCode),
425
+ details: { credential_id: resolvedCredentialId },
426
+ });
291
427
  }
292
428
  const authorizeUrl = r.data?.authorize_url ?? r.data?.authorization_url;
293
- return formatResult({
294
- authorize_url: authorizeUrl,
295
- state: r.data?.state,
296
- instruction: "Open authorize_url in a browser, complete consent. Then call apimapper_credential_get to verify population.",
297
- }, false, { maxChars: 2000 });
429
+ // F-7.1 (Pass-1 consolidation) — terminal URL UX.
430
+ //
431
+ // Thomas live-smoked the bug: Claude Code rendered the authorize URL
432
+ // inside a JSON.stringify(_, null, 2) payload, so triple-click
433
+ // copied the indented text and the URL pasted into the browser with
434
+ // line-breaks + leading whitespace.
435
+ //
436
+ // Best-practice consensus (see citations below) is to surface the
437
+ // URL as BARE text on its own line:
438
+ // - URL alone on its own line, no leading whitespace, no trailing
439
+ // punctuation.
440
+ // - Blank lines above + below so triple-click selects only the URL.
441
+ // - NO markdown link wrap `[label](url)` — claude-code#30162
442
+ // anti-pattern (masks URL, breaks copy).
443
+ // - NO fenced code block around the URL — terminal URL-detectors
444
+ // are inconsistent inside ```.
445
+ // - NO JSON-pretty-print around the URL — that's the bug.
446
+ // - NO server-emitted OSC-8 escape — Claude Code auto-wraps bare
447
+ // URLs (claude-code#13008); double-wrap is broken, and Warp /
448
+ // macOS Terminal / tmux+Claude Code paths have no OSC-8 fallback
449
+ // (claude-code#27047, Warp#6393).
450
+ // - structuredContent still carries the URL + state + credential_id
451
+ // for programmatic consumers (MCP spec 2025-06-18 — structured
452
+ // JSON mirror alongside text content).
453
+ //
454
+ // Citations: MCP spec 2025-06-18 server/tools section; claude-code
455
+ // issues #13008, #30162, #27047; Warp#6393; Notion MCP plain-URL
456
+ // pattern (github.com/makenotion/notion-mcp-server).
457
+ const lines = [
458
+ "Open this URL in your browser to authorize the credential:",
459
+ "",
460
+ authorizeUrl ?? "(no authorize URL returned)",
461
+ "",
462
+ `After approval, call apimapper_credential_get({ id: "${resolvedCredentialId}" }) to verify the credential was populated.`,
463
+ ];
464
+ if (r.data?.state) {
465
+ lines.push("", `State: ${r.data.state}`);
466
+ }
467
+ if (scopes && scopes.length > 0) {
468
+ lines.push(`Scopes: ${scopes.join(", ")}`);
469
+ }
470
+ return {
471
+ content: [{ type: "text", text: lines.join("\n") }],
472
+ structuredContent: {
473
+ authorize_url: authorizeUrl,
474
+ credential_id: resolvedCredentialId,
475
+ state: r.data?.state,
476
+ ...(scopes && scopes.length > 0 ? { scopes } : {}),
477
+ },
478
+ };
298
479
  });
299
480
  }
300
481
  //# sourceMappingURL=credentials.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/modules/apimapper/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/modules/apimapper/credentials.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 type DiagnoseBlocker = "malformed-token" | "expired" | "phishing-risk" | "plugin-missing" | "identity-error" | "scope-too-narrow" | "capability-missing";
3
3
  export interface DiagnoseCheck {
4
4
  name: string;
@@ -11,8 +11,60 @@ export interface DiagnoseResult {
11
11
  recommendation: string;
12
12
  blockers: DiagnoseBlocker[];
13
13
  }
14
+ /**
15
+ * Check whether a token's scope set covers a required scope, respecting
16
+ * the read ⊂ write ⊂ admin hierarchy. Returns true iff the token holds
17
+ * a scope that implies (or equals) the required one.
18
+ *
19
+ * @param tokenScopes - The `scope` array decoded from the token payload.
20
+ * @param required - The scope this caller needs (e.g. "read").
21
+ */
22
+ export declare function hasScope(tokenScopes: readonly string[], required: string): boolean;
23
+ /**
24
+ * F-05: Hard wall-clock cap on every identity probe.
25
+ *
26
+ * Without this, a non-responsive target server can stall the diagnosis
27
+ * indefinitely — the setup wizard appears to hang and the user has no
28
+ * cancel affordance. 5 seconds is a generous-but-bounded budget: real
29
+ * WP/Joomla identity endpoints respond in <500ms typically; a 5s ceiling
30
+ * surfaces "this server isn't responding" within a UX-acceptable window.
31
+ *
32
+ * Exported for tests that may want to override or assert on the value.
33
+ */
34
+ export declare const PROBE_TIMEOUT_MS = 5000;
35
+ /**
36
+ * Wrapper around `fetch()` that hard-binds an `AbortSignal.timeout()` to
37
+ * each request. Used by both WordPress and Joomla identity probes so the
38
+ * timeout policy is enforced in exactly one place (no DRY drift).
39
+ *
40
+ * Exported (W1.9 / F-15) so the `apimapper_health` downstream probe of
41
+ * api.wootsup.com can reuse the same primitive — the timeout contract is
42
+ * generic (URL/init/timeoutMs), not diagnose-specific, so a re-export
43
+ * avoids duplicating the AbortSignal.timeout wiring across files. If a
44
+ * future third consumer materialises, the function moves to a shared
45
+ * `http-utils.ts` module; today, two callers in the same module folder
46
+ * does not warrant a new file.
47
+ *
48
+ * If the caller passes a `signal` in `init`, it is silently overridden —
49
+ * the probe contract is "you get a timeout, full stop". A future caller
50
+ * that wants both timeout AND user-cancellation should compose signals
51
+ * via `AbortSignal.any([userSignal, AbortSignal.timeout(ms)])`, but that
52
+ * is intentionally out of scope here.
53
+ *
54
+ * On timeout the underlying fetch rejects with `DOMException("...",
55
+ * "TimeoutError")` (or `"AbortError"` on older runtimes). The caller is
56
+ * expected to narrow on `error.name` to surface a "timeout after Nms"
57
+ * message rather than a generic transport failure.
58
+ *
59
+ * @param url - URL to fetch.
60
+ * @param init - Optional RequestInit. Any `signal` field is overridden.
61
+ * @param timeoutMs - Timeout in milliseconds. Must be a finite, positive
62
+ * integer; falls back to {@link PROBE_TIMEOUT_MS} otherwise.
63
+ * @returns The Response on success.
64
+ */
65
+ export declare function fetchWithTimeout(url: string, init?: RequestInit, timeoutMs?: number): Promise<Response>;
14
66
  /**
15
67
  * Run the full diagnosis chain. Never throws; always returns DiagnoseResult.
16
68
  */
17
69
  export declare function diagnoseSite(token: string, siteUrl: string): Promise<DiagnoseResult>;
18
- export declare function registerDiagnoseTool(server: McpServer): void;
70
+ export declare function registerDiagnoseTool(server: ToolRegistrar): void;