@wootsup/mcp 0.1.0-rc.9 → 0.3.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.
- package/CHANGELOG.md +148 -83
- package/README.md +36 -32
- package/SECURITY.md +15 -6
- package/dist/auth/keychain.d.ts +27 -1
- package/dist/auth/keychain.js +48 -2
- package/dist/auth/keychain.js.map +1 -1
- package/dist/cli-hint.d.ts +22 -0
- package/dist/cli-hint.js +55 -0
- package/dist/cli-hint.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +163 -22
- package/dist/index.js.map +1 -1
- package/dist/install-skill.js +1 -1
- package/dist/modules/apimapper/cache.d.ts +2 -2
- package/dist/modules/apimapper/cache.js +119 -29
- package/dist/modules/apimapper/cache.js.map +1 -1
- package/dist/modules/apimapper/client.d.ts +102 -1
- package/dist/modules/apimapper/client.js +631 -297
- package/dist/modules/apimapper/client.js.map +1 -1
- package/dist/modules/apimapper/connections-format.d.ts +51 -0
- package/dist/modules/apimapper/connections-format.js +261 -0
- package/dist/modules/apimapper/connections-format.js.map +1 -0
- package/dist/modules/apimapper/connections-trim.d.ts +82 -0
- package/dist/modules/apimapper/connections-trim.js +224 -0
- package/dist/modules/apimapper/connections-trim.js.map +1 -0
- package/dist/modules/apimapper/connections.d.ts +14 -2
- package/dist/modules/apimapper/connections.js +612 -153
- package/dist/modules/apimapper/connections.js.map +1 -1
- package/dist/modules/apimapper/credential-sanitizer.d.ts +5 -0
- package/dist/modules/apimapper/credential-sanitizer.js +60 -1
- package/dist/modules/apimapper/credential-sanitizer.js.map +1 -1
- package/dist/modules/apimapper/credentials-format.d.ts +21 -0
- package/dist/modules/apimapper/credentials-format.js +145 -0
- package/dist/modules/apimapper/credentials-format.js.map +1 -0
- package/dist/modules/apimapper/credentials.d.ts +12 -2
- package/dist/modules/apimapper/credentials.js +226 -73
- package/dist/modules/apimapper/credentials.js.map +1 -1
- package/dist/modules/apimapper/diagnose.d.ts +54 -2
- package/dist/modules/apimapper/diagnose.js +213 -12
- package/dist/modules/apimapper/diagnose.js.map +1 -1
- package/dist/modules/apimapper/elicitation.d.ts +54 -0
- package/dist/modules/apimapper/elicitation.js +90 -0
- package/dist/modules/apimapper/elicitation.js.map +1 -0
- package/dist/modules/apimapper/flows-format.d.ts +50 -0
- package/dist/modules/apimapper/flows-format.js +318 -0
- package/dist/modules/apimapper/flows-format.js.map +1 -0
- package/dist/modules/apimapper/flows.d.ts +13 -2
- package/dist/modules/apimapper/flows.js +312 -122
- package/dist/modules/apimapper/flows.js.map +1 -1
- package/dist/modules/apimapper/gateway/advanced-tool.d.ts +9 -0
- package/dist/modules/apimapper/gateway/advanced-tool.js +265 -0
- package/dist/modules/apimapper/gateway/advanced-tool.js.map +1 -0
- package/dist/modules/apimapper/gateway/capturing-server.d.ts +81 -0
- package/dist/modules/apimapper/gateway/capturing-server.js +87 -0
- package/dist/modules/apimapper/gateway/capturing-server.js.map +1 -0
- package/dist/modules/apimapper/gateway/essentials.d.ts +4 -0
- package/dist/modules/apimapper/gateway/essentials.js +35 -0
- package/dist/modules/apimapper/gateway/essentials.js.map +1 -0
- package/dist/modules/apimapper/gateway/test-support.d.ts +17 -0
- package/dist/modules/apimapper/gateway/test-support.js +43 -0
- package/dist/modules/apimapper/gateway/test-support.js.map +1 -0
- package/dist/modules/apimapper/get-skill.d.ts +3 -3
- package/dist/modules/apimapper/get-skill.js +47 -7
- package/dist/modules/apimapper/get-skill.js.map +1 -1
- package/dist/modules/apimapper/graph-builder.js +1 -1
- package/dist/modules/apimapper/graph-builder.js.map +1 -1
- package/dist/modules/apimapper/graph.d.ts +2 -2
- package/dist/modules/apimapper/graph.js +170 -35
- package/dist/modules/apimapper/graph.js.map +1 -1
- package/dist/modules/apimapper/index.d.ts +17 -1
- package/dist/modules/apimapper/index.js +68 -17
- package/dist/modules/apimapper/index.js.map +1 -1
- package/dist/modules/apimapper/inspect.d.ts +3 -2
- package/dist/modules/apimapper/inspect.js +97 -13
- package/dist/modules/apimapper/inspect.js.map +1 -1
- package/dist/modules/apimapper/library.d.ts +2 -2
- package/dist/modules/apimapper/library.js +665 -80
- package/dist/modules/apimapper/library.js.map +1 -1
- package/dist/modules/apimapper/license-format.d.ts +22 -0
- package/dist/modules/apimapper/license-format.js +149 -0
- package/dist/modules/apimapper/license-format.js.map +1 -0
- package/dist/modules/apimapper/license.d.ts +16 -2
- package/dist/modules/apimapper/license.js +62 -38
- package/dist/modules/apimapper/license.js.map +1 -1
- package/dist/modules/apimapper/local-sources.d.ts +2 -2
- package/dist/modules/apimapper/local-sources.js +44 -30
- package/dist/modules/apimapper/local-sources.js.map +1 -1
- package/dist/modules/apimapper/misc.d.ts +30 -2
- package/dist/modules/apimapper/misc.js +114 -49
- package/dist/modules/apimapper/misc.js.map +1 -1
- package/dist/modules/apimapper/node-schema.d.ts +52 -0
- package/dist/modules/apimapper/node-schema.js +70 -2
- package/dist/modules/apimapper/node-schema.js.map +1 -1
- package/dist/modules/apimapper/normalizers.d.ts +1 -0
- package/dist/modules/apimapper/normalizers.js +51 -0
- package/dist/modules/apimapper/normalizers.js.map +1 -1
- package/dist/modules/apimapper/onboarding.d.ts +78 -3
- package/dist/modules/apimapper/onboarding.js +428 -26
- package/dist/modules/apimapper/onboarding.js.map +1 -1
- package/dist/modules/apimapper/read-cache.d.ts +31 -2
- package/dist/modules/apimapper/read-cache.js +20 -6
- package/dist/modules/apimapper/read-cache.js.map +1 -1
- package/dist/modules/apimapper/render/_shared.d.ts +24 -0
- package/dist/modules/apimapper/render/_shared.js +84 -0
- package/dist/modules/apimapper/render/_shared.js.map +1 -0
- package/dist/modules/apimapper/render/dag.d.ts +18 -0
- package/dist/modules/apimapper/render/dag.js +70 -0
- package/dist/modules/apimapper/render/dag.js.map +1 -0
- package/dist/modules/apimapper/render/index.d.ts +2 -0
- package/dist/modules/apimapper/render/index.js +112 -0
- package/dist/modules/apimapper/render/index.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.js +70 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/chart-line.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/chart-line.js +71 -0
- package/dist/modules/apimapper/render/renderers/chart-line.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/diff.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/diff.js +154 -0
- package/dist/modules/apimapper/render/renderers/diff.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.d.ts +1 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.js +180 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/json-tree.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/json-tree.js +87 -0
- package/dist/modules/apimapper/render/renderers/json-tree.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.js +83 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/table.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/table.js +75 -0
- package/dist/modules/apimapper/render/renderers/table.js.map +1 -0
- package/dist/modules/apimapper/render/schemas.d.ts +23 -0
- package/dist/modules/apimapper/render/schemas.js +56 -0
- package/dist/modules/apimapper/render/schemas.js.map +1 -0
- package/dist/modules/apimapper/render/secret-masking.d.ts +5 -0
- package/dist/modules/apimapper/render/secret-masking.js +51 -0
- package/dist/modules/apimapper/render/secret-masking.js.map +1 -0
- package/dist/modules/apimapper/render/sidecar.d.ts +21 -0
- package/dist/modules/apimapper/render/sidecar.js +66 -0
- package/dist/modules/apimapper/render/sidecar.js.map +1 -0
- package/dist/modules/apimapper/render/token-cap.d.ts +21 -0
- package/dist/modules/apimapper/render/token-cap.js +57 -0
- package/dist/modules/apimapper/render/token-cap.js.map +1 -0
- package/dist/modules/apimapper/schema.d.ts +2 -2
- package/dist/modules/apimapper/schema.js +92 -33
- package/dist/modules/apimapper/schema.js.map +1 -1
- package/dist/modules/apimapper/settings-format.d.ts +23 -0
- package/dist/modules/apimapper/settings-format.js +135 -0
- package/dist/modules/apimapper/settings-format.js.map +1 -0
- package/dist/modules/apimapper/settings.d.ts +2 -2
- package/dist/modules/apimapper/settings.js +100 -42
- package/dist/modules/apimapper/settings.js.map +1 -1
- package/dist/modules/apimapper/sites-tools.d.ts +29 -0
- package/dist/modules/apimapper/sites-tools.js +165 -0
- package/dist/modules/apimapper/sites-tools.js.map +1 -0
- package/dist/modules/apimapper/skill-resources.d.ts +2 -2
- package/dist/modules/apimapper/skill-resources.js.map +1 -1
- package/dist/modules/apimapper/token-baseline.harness.d.ts +91 -0
- package/dist/modules/apimapper/token-baseline.harness.js +291 -0
- package/dist/modules/apimapper/token-baseline.harness.js.map +1 -0
- package/dist/modules/apimapper/tool-result.d.ts +46 -0
- package/dist/modules/apimapper/tool-result.js +63 -0
- package/dist/modules/apimapper/tool-result.js.map +1 -0
- package/dist/modules/apimapper/toolslist-size.d.ts +56 -0
- package/dist/modules/apimapper/toolslist-size.js +192 -0
- package/dist/modules/apimapper/toolslist-size.js.map +1 -0
- package/dist/modules/apimapper/types.d.ts +44 -8
- package/dist/modules/apimapper/types.js +26 -1
- package/dist/modules/apimapper/types.js.map +1 -1
- package/dist/modules/apimapper/use-profile.d.ts +21 -0
- package/dist/modules/apimapper/use-profile.js +56 -2
- package/dist/modules/apimapper/use-profile.js.map +1 -1
- package/dist/modules/apimapper/whitelist-drift.d.ts +85 -0
- package/dist/modules/apimapper/whitelist-drift.js +360 -0
- package/dist/modules/apimapper/whitelist-drift.js.map +1 -0
- package/dist/modules/apimapper/workflows.d.ts +2 -2
- package/dist/modules/apimapper/workflows.js +202 -20
- package/dist/modules/apimapper/workflows.js.map +1 -1
- package/dist/modules/apimapper/yootheme-binding.d.ts +35 -0
- package/dist/modules/apimapper/yootheme-binding.js +186 -0
- package/dist/modules/apimapper/yootheme-binding.js.map +1 -0
- package/dist/platform/index.d.ts +56 -0
- package/dist/platform/index.js +195 -7
- package/dist/platform/index.js.map +1 -1
- package/dist/setup/detect-clients.d.ts +40 -1
- package/dist/setup/detect-clients.js +148 -1
- package/dist/setup/detect-clients.js.map +1 -1
- package/dist/setup/probe-handshake.js +40 -7
- package/dist/setup/probe-handshake.js.map +1 -1
- package/dist/setup/remove-config.d.ts +8 -0
- package/dist/setup/remove-config.js +145 -0
- package/dist/setup/remove-config.js.map +1 -0
- package/dist/setup/uninstall.d.ts +34 -0
- package/dist/setup/uninstall.js +147 -0
- package/dist/setup/uninstall.js.map +1 -0
- package/dist/setup-cli.d.ts +60 -0
- package/dist/setup-cli.js +155 -5
- package/dist/setup-cli.js.map +1 -1
- package/dist/sites/loader.d.ts +41 -0
- package/dist/sites/loader.js +119 -0
- package/dist/sites/loader.js.map +1 -0
- package/dist/sites/schema.d.ts +69 -0
- package/dist/sites/schema.js +71 -0
- package/dist/sites/schema.js.map +1 -0
- package/dist/sites/secret-resolver.d.ts +47 -0
- package/dist/sites/secret-resolver.js +150 -0
- package/dist/sites/secret-resolver.js.map +1 -0
- package/dist/skill-instructions.d.ts +1 -1
- package/dist/skill-instructions.js +5 -0
- package/dist/skill-instructions.js.map +1 -1
- package/dist/transports/stdio.js +4 -4
- package/dist/transports/stdio.js.map +1 -1
- package/dist/uninstall-skill.d.ts +27 -0
- package/dist/uninstall-skill.js +89 -0
- package/dist/uninstall-skill.js.map +1 -0
- package/docs/architecture.md +22 -22
- package/docs/customgraph-internal-migration.md +4 -4
- package/docs/security.md +2 -21
- package/docs/tools.md +40 -12
- package/manifest.json +77 -70
- package/package.json +68 -60
- package/skills/apimapper/SKILL.md +53 -7
- package/skills/apimapper/reference/conditional-style-multi-items.md +114 -0
- package/skills/apimapper/reference/jmespath-pitfalls.md +108 -0
- package/skills/apimapper/reference/joomla.md +1 -1
- package/skills/apimapper/reference/library-template-discovery.md +65 -0
- package/skills/apimapper/reference/merge-two-sources-on-key.md +99 -0
- package/skills/apimapper/reference/render.md +132 -0
- package/skills/apimapper/reference/troubleshooting.md +21 -1
- package/skills/apimapper/reference/yootheme.md +1 -1
- package/dist/auth/oauth-provider.d.ts +0 -68
- package/dist/auth/oauth-provider.js +0 -232
- package/dist/auth/oauth-provider.js.map +0 -1
- package/dist/server-http.d.ts +0 -22
- package/dist/server-http.js +0 -159
- package/dist/server-http.js.map +0 -1
- package/dist/transports/http.d.ts +0 -29
- package/dist/transports/http.js +0 -267
- package/dist/transports/http.js.map +0 -1
|
@@ -8,47 +8,91 @@
|
|
|
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,
|
|
33
|
+
import { formatResult, tableResult, errorResult, readOnly, creating, mutating, destructive, elicitChoice, } from "@getimo/mcp-toolkit";
|
|
14
34
|
import { request, hintFor } from "./client.js";
|
|
15
|
-
|
|
35
|
+
import { restErrorResult } from "./tool-result.js";
|
|
36
|
+
import { toRows } from "./types.js";
|
|
37
|
+
import { CREDENTIAL_TABLE_COLUMNS, CREDENTIAL_COMPACT_COLUMNS, CREDENTIAL_LIST_NEXT_STEPS, mapCredentialRow, compactCredentialRow, buildCredentialDetail, } from "./credentials-format.js";
|
|
38
|
+
import { ambiguityFallbackError, } from "./elicitation.js";
|
|
39
|
+
/** The provider slug of an OAuth credential — `oauth_provider` then `provider`. */
|
|
40
|
+
function credentialProvider(c) {
|
|
41
|
+
return c.oauth_provider ?? c.provider ?? undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Register the credential CRUD + OAuth tools.
|
|
45
|
+
*
|
|
46
|
+
* @param server the tool registrar (essentials forward, rest captured).
|
|
47
|
+
* @param elicitation optional elicitation capability (the real McpServer, or
|
|
48
|
+
* any `{ server: { elicitInput } }`). Supplied only by the host wiring in
|
|
49
|
+
* index.ts. When omitted, `oauth_authorize_begin` falls back to a
|
|
50
|
+
* structured error on genuine ambiguity instead of prompting.
|
|
51
|
+
*/
|
|
52
|
+
export function registerCredentialTools(server, elicitation) {
|
|
16
53
|
// ── apimapper_credential_list ──────────────────────────────────────
|
|
17
54
|
server.registerTool("apimapper_credential_list", {
|
|
18
55
|
title: "List Credentials",
|
|
56
|
+
// rc.10 A6 (2026-05-19) — explicit hint that auth_type is a
|
|
57
|
+
// CLIENT-SIDE filter applied after the server returns the full
|
|
58
|
+
// set. Previously the AI made repeat calls with different
|
|
59
|
+
// auth_type values expecting different data — they were always
|
|
60
|
+
// the same set, just filtered locally.
|
|
19
61
|
description: "List all stored credentials (sanitised — secrets omitted). " +
|
|
20
|
-
"
|
|
21
|
-
"
|
|
62
|
+
"The `auth_type` parameter is a CLIENT-SIDE filter — the server returns the same set " +
|
|
63
|
+
"regardless of `auth_type`. Calling repeatedly with different `auth_type` values returns " +
|
|
64
|
+
"identical underlying data; a single call returns everything. " +
|
|
65
|
+
"Use apimapper_credential_get for one credential's full metadata." +
|
|
66
|
+
"\n\nExample:\n apimapper_credential_list({}) // returns all credentials\n" +
|
|
67
|
+
" apimapper_credential_list({ auth_type: 'oauth2_code' }) // local filter only",
|
|
22
68
|
inputSchema: {
|
|
23
69
|
auth_type: z
|
|
24
70
|
.enum(["api_key", "bearer", "basic_auth", "oauth2_code", "oauth2_cc", "all"])
|
|
25
71
|
.default("all")
|
|
26
|
-
.describe("Filter by auth_type (server wire-format field)"),
|
|
72
|
+
.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
73
|
},
|
|
28
|
-
annotations: readOnly(),
|
|
74
|
+
annotations: readOnly({ title: "List Credentials", openWorld: true }),
|
|
29
75
|
}, async ({ auth_type }) => {
|
|
30
76
|
const r = await request("/credentials", {}, { sanitize: true });
|
|
31
77
|
if (!r.success) {
|
|
32
|
-
return
|
|
78
|
+
return restErrorResult(r, { auth_type }, { message: "credential list failed" });
|
|
33
79
|
}
|
|
34
80
|
const raw = Array.isArray(r.data?.credentials) ? r.data.credentials : [];
|
|
35
81
|
const items = auth_type === "all" ? raw : raw.filter((c) => c.auth_type === auth_type);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
{ key: "updated_at", label: "UPDATED", width: 22 },
|
|
49
|
-
],
|
|
82
|
+
// W3.1 — tableResult: ASCII table for the LLM + typed DataTable payload
|
|
83
|
+
// for the Rich Card. T1 (W3.2): explicit compactColumns/compactMap drop
|
|
84
|
+
// PROVIDER/UPDATED at 21+ rows. IA-7: id stays llmOnly. IA-10: the
|
|
85
|
+
// footer carries the next-step guidance.
|
|
86
|
+
// SECURITY: `items` is the sanitised set — `request` was called with
|
|
87
|
+
// `{ sanitize: true }`, so any leaked auth_data was already stripped
|
|
88
|
+
// before it could reach the tableResult UI payload.
|
|
89
|
+
return tableResult(toRows(items), {
|
|
90
|
+
columns: CREDENTIAL_TABLE_COLUMNS,
|
|
91
|
+
compactColumns: CREDENTIAL_COMPACT_COLUMNS,
|
|
92
|
+
map: mapCredentialRow,
|
|
93
|
+
compactMap: compactCredentialRow,
|
|
50
94
|
header: (n) => `${n} credentials`,
|
|
51
|
-
footer:
|
|
95
|
+
footer: CREDENTIAL_LIST_NEXT_STEPS,
|
|
52
96
|
});
|
|
53
97
|
});
|
|
54
98
|
// ── apimapper_credential_get ───────────────────────────────────────
|
|
@@ -61,31 +105,30 @@ export function registerCredentialTools(server) {
|
|
|
61
105
|
inputSchema: {
|
|
62
106
|
id: z.string().describe('Credential ID (e.g., "cred_abc123"). Use apimapper_credential_list to find.'),
|
|
63
107
|
},
|
|
64
|
-
annotations: readOnly(),
|
|
108
|
+
annotations: readOnly({ title: "Get Credential", openWorld: true }),
|
|
65
109
|
}, async ({ id }) => {
|
|
66
110
|
const r = await request(`/credentials/${encodeURIComponent(id)}`, {}, { sanitize: true });
|
|
67
111
|
if (!r.success) {
|
|
68
|
-
return
|
|
112
|
+
return restErrorResult(r, { id }, { message: "credential get failed" });
|
|
69
113
|
}
|
|
70
114
|
// Server may return either `credential: {...}` envelope or bare object.
|
|
71
115
|
const cred = r.data && typeof r.data === "object" && "credential" in r.data
|
|
72
116
|
? r.data.credential
|
|
73
117
|
: r.data;
|
|
74
118
|
if (!cred || Object.keys(cred).length === 0) {
|
|
75
|
-
return
|
|
119
|
+
return errorResult({
|
|
120
|
+
message: "credential not found",
|
|
121
|
+
code: r.status ? String(r.status) : "not_found",
|
|
122
|
+
suggestion: hintFor("not_found"),
|
|
123
|
+
details: { id },
|
|
124
|
+
});
|
|
76
125
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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 });
|
|
126
|
+
// W3.1 — detailResult: grouped key-value detail for the Rich Card.
|
|
127
|
+
// SECURITY: `cred` is already sanitised (request `{ sanitize: true }`)
|
|
128
|
+
// and the `Credential` type omits `auth_data` — buildCredentialDetail
|
|
129
|
+
// surfaces only non-secret metadata. IA-7: opaque IDs are copyable code
|
|
130
|
+
// entries. IA-10: a dedicated "Next steps" group carries follow-ups.
|
|
131
|
+
return buildCredentialDetail(id, cred);
|
|
89
132
|
});
|
|
90
133
|
// ── apimapper_credential_create ────────────────────────────────────
|
|
91
134
|
server.registerTool("apimapper_credential_create", {
|
|
@@ -109,17 +152,11 @@ export function registerCredentialTools(server) {
|
|
|
109
152
|
provider: z.string().optional().describe('Generic provider slug for credential-by-provider filtering'),
|
|
110
153
|
oauth_token_expires_at: z.string().optional().describe('ISO timestamp when access token expires (oauth2_* only)'),
|
|
111
154
|
},
|
|
112
|
-
annotations: creating(),
|
|
155
|
+
annotations: creating({ title: "Create Credential", openWorld: true }),
|
|
113
156
|
}, async (input) => {
|
|
114
157
|
const r = await request("/credentials", { method: "POST", body: JSON.stringify(input) }, { sanitize: true });
|
|
115
158
|
if (!r.success) {
|
|
116
|
-
return
|
|
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);
|
|
159
|
+
return restErrorResult(r, { name: input.name, auth_type: input.auth_type }, { message: "credential create failed" });
|
|
123
160
|
}
|
|
124
161
|
const cred = r.data?.credential;
|
|
125
162
|
return formatResult({
|
|
@@ -142,13 +179,19 @@ export function registerCredentialTools(server) {
|
|
|
142
179
|
.record(z.string(), z.unknown())
|
|
143
180
|
.describe('Fields to update — snake_case keys. ' +
|
|
144
181
|
'Examples: {"name":"Renamed"}, {"auth_data":{"api_key":"newkey"}}, ' +
|
|
145
|
-
'{"oauth_token_expires_at":"2026-12-31T00:00:00Z"}'
|
|
182
|
+
'{"oauth_token_expires_at":"2026-12-31T00:00:00Z"}. ' +
|
|
183
|
+
// DATA-LOW (Wave-B 2026-06-03): open record by design. `auth_data`
|
|
184
|
+
// is itself a free-form nested object (provider-specific keys), so a
|
|
185
|
+
// .strict() allow-list cannot safely enumerate it. The PHP backend
|
|
186
|
+
// column-whitelists on write (Wave A), dropping unknown top-level
|
|
187
|
+
// keys server-side.
|
|
188
|
+
'Unknown top-level keys are dropped by the server (column-whitelisted on write).'),
|
|
146
189
|
},
|
|
147
|
-
annotations: mutating(),
|
|
190
|
+
annotations: mutating({ title: "Update Credential", openWorld: true }),
|
|
148
191
|
}, async ({ id, patch }) => {
|
|
149
192
|
const r = await request(`/credentials/${encodeURIComponent(id)}`, { method: "PUT", body: JSON.stringify(patch) }, { sanitize: true });
|
|
150
193
|
if (!r.success) {
|
|
151
|
-
return
|
|
194
|
+
return restErrorResult(r, { id }, { message: "credential update failed" });
|
|
152
195
|
}
|
|
153
196
|
const cred = r.data?.credential;
|
|
154
197
|
return formatResult({
|
|
@@ -172,10 +215,13 @@ export function registerCredentialTools(server) {
|
|
|
172
215
|
.default(false)
|
|
173
216
|
.describe("Must be true to execute. On confirm:false, returns a preview."),
|
|
174
217
|
},
|
|
175
|
-
annotations: destructive(),
|
|
218
|
+
annotations: destructive({ title: "Delete Credential", openWorld: true }),
|
|
176
219
|
}, async ({ id, confirm }) => {
|
|
177
220
|
if (!confirm) {
|
|
178
|
-
// Preview: fetch metadata for informed confirmation.
|
|
221
|
+
// Preview: fetch metadata for informed confirmation. Stays on
|
|
222
|
+
// formatResult — the Wave-2A pin tests consume this preview via a
|
|
223
|
+
// raw JSON.parse of content[0].text; a structured builder would
|
|
224
|
+
// append the structured-meta marker and break that contract.
|
|
179
225
|
const preview = await request(`/credentials/${encodeURIComponent(id)}`, {}, { sanitize: true });
|
|
180
226
|
// Guard explicitly on preview.success — the previous type-narrowing
|
|
181
227
|
// was unsound (cast to Credential | undefined relied on `cred` being
|
|
@@ -202,7 +248,7 @@ export function registerCredentialTools(server) {
|
|
|
202
248
|
}
|
|
203
249
|
const r = await request(`/credentials/${encodeURIComponent(id)}`, { method: "DELETE" });
|
|
204
250
|
if (!r.success) {
|
|
205
|
-
return
|
|
251
|
+
return restErrorResult(r, { id }, { message: "credential delete failed" });
|
|
206
252
|
}
|
|
207
253
|
return formatResult({ deleted: true, id }, false, { maxChars: 1500 });
|
|
208
254
|
});
|
|
@@ -216,7 +262,7 @@ export function registerCredentialTools(server) {
|
|
|
216
262
|
connection_id: z.string().describe("Connection ID. Use apimapper_connection_list."),
|
|
217
263
|
credential_id: z.string().describe("Credential ID. Use apimapper_credential_list."),
|
|
218
264
|
},
|
|
219
|
-
annotations: mutating(),
|
|
265
|
+
annotations: mutating({ title: "Link Credential", openWorld: true }),
|
|
220
266
|
}, async ({ connection_id, credential_id }) => {
|
|
221
267
|
// Connection wire = snake_case (verified vs ConnectionProbeCore.php:89).
|
|
222
268
|
// PHP fromControllerResponse(_, 'connection') → {success, connection:{…}}.
|
|
@@ -228,16 +274,14 @@ export function registerCredentialTools(server) {
|
|
|
228
274
|
body: JSON.stringify({ credential_id }),
|
|
229
275
|
}, { unwrapInnerSuccess: true });
|
|
230
276
|
if (!r.success) {
|
|
231
|
-
return
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
context: { connection_id, credential_id },
|
|
237
|
-
hint: r.payloadFailed
|
|
277
|
+
return restErrorResult(r, { connection_id, credential_id, payloadFailed: r.payloadFailed }, {
|
|
278
|
+
message: "credential link failed",
|
|
279
|
+
// Per-site nuance: a 200 + success:false (payloadFailed) gets a
|
|
280
|
+
// link-specific hint; everything else falls back to hintFor().
|
|
281
|
+
suggestion: r.payloadFailed
|
|
238
282
|
? "Connection update returned success:false — verify the connection_id exists and credential_id is valid."
|
|
239
283
|
: hintFor(r.errorCode),
|
|
240
|
-
}
|
|
284
|
+
});
|
|
241
285
|
}
|
|
242
286
|
const conn = r.data && typeof r.data === "object" && "connection" in r.data
|
|
243
287
|
? r.data.connection
|
|
@@ -261,19 +305,83 @@ export function registerCredentialTools(server) {
|
|
|
261
305
|
title: "Begin OAuth2 Authorize Flow",
|
|
262
306
|
description: "Initiate the OAuth2 authorization-code flow for a credential. Returns the upstream " +
|
|
263
307
|
"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
|
-
"
|
|
308
|
+
"After consent: call apimapper_credential_get to verify the credential was populated. " +
|
|
309
|
+
"If `credential_id` is omitted, supply `provider` to scope the lookup — when exactly " +
|
|
310
|
+
"one OAuth credential matches it is used automatically; when several match the user " +
|
|
311
|
+
"is asked to pick." +
|
|
312
|
+
"\n\nExample:\n apimapper_oauth_authorize_begin({ credential_id: 'cred_google_drive' })\n" +
|
|
313
|
+
" apimapper_oauth_authorize_begin({ provider: 'google' }) // resolves by provider",
|
|
266
314
|
inputSchema: {
|
|
267
315
|
credential_id: z
|
|
268
316
|
.string()
|
|
269
|
-
.
|
|
317
|
+
.optional()
|
|
318
|
+
.describe("Credential ID (must be type oauth2_code). Use apimapper_credential_list. " +
|
|
319
|
+
"Omit to resolve by `provider` instead."),
|
|
320
|
+
provider: z
|
|
321
|
+
.string()
|
|
322
|
+
.optional()
|
|
323
|
+
.describe('OAuth provider slug to resolve the credential when `credential_id` is omitted ' +
|
|
324
|
+
'(e.g., "google", "meta"). Match is case-insensitive against the credential\'s ' +
|
|
325
|
+
"oauth_provider / provider field."),
|
|
270
326
|
scopes: z
|
|
271
327
|
.array(z.string())
|
|
272
328
|
.optional()
|
|
273
329
|
.describe('Override scopes (e.g., ["https://www.googleapis.com/auth/spreadsheets.readonly"])'),
|
|
274
330
|
},
|
|
275
|
-
annotations: creating(),
|
|
276
|
-
}, async ({ credential_id, scopes }) => {
|
|
331
|
+
annotations: creating({ title: "Begin OAuth Authorization", openWorld: true }),
|
|
332
|
+
}, async ({ credential_id, provider, scopes }) => {
|
|
333
|
+
// W3.6 — resolve the credential when `credential_id` is omitted.
|
|
334
|
+
// Exactly 1 OAuth credential matching `provider` → auto-pick;
|
|
335
|
+
// >1 → elicitChoice; 0 → structured error; elicitChoice null
|
|
336
|
+
// (unsupported client / declined) → structured candidate-list error.
|
|
337
|
+
let resolvedCredentialId = credential_id;
|
|
338
|
+
if (!resolvedCredentialId) {
|
|
339
|
+
const lr = await request("/credentials", {}, { sanitize: true });
|
|
340
|
+
if (!lr.success) {
|
|
341
|
+
return restErrorResult(lr, { provider }, { message: "credential lookup failed" });
|
|
342
|
+
}
|
|
343
|
+
const all = Array.isArray(lr.data?.credentials) ? lr.data.credentials : [];
|
|
344
|
+
// OAuth authorize-code flow only applies to oauth2_code credentials.
|
|
345
|
+
const oauthCreds = all.filter((c) => c.auth_type === "oauth2_code");
|
|
346
|
+
const matches = provider
|
|
347
|
+
? oauthCreds.filter((c) => credentialProvider(c)?.toLowerCase() === provider.toLowerCase())
|
|
348
|
+
: oauthCreds;
|
|
349
|
+
if (matches.length === 0) {
|
|
350
|
+
return errorResult({
|
|
351
|
+
message: provider
|
|
352
|
+
? `No oauth2_code credential matches provider "${provider}".`
|
|
353
|
+
: "No oauth2_code credential found.",
|
|
354
|
+
code: "credential_not_found",
|
|
355
|
+
suggestion: "Create one with apimapper_credential_create (auth_type: 'oauth2_code'), " +
|
|
356
|
+
"or pass an explicit `credential_id`.",
|
|
357
|
+
details: { provider },
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
if (matches.length === 1) {
|
|
361
|
+
resolvedCredentialId = matches[0].id;
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
const candidates = matches.map((c) => ({
|
|
365
|
+
id: c.id,
|
|
366
|
+
label: c.name,
|
|
367
|
+
}));
|
|
368
|
+
const picked = elicitation
|
|
369
|
+
? await elicitChoice(elicitation, provider
|
|
370
|
+
? `Several "${provider}" OAuth credentials exist. Pick the one to authorize.`
|
|
371
|
+
: "Several OAuth credentials exist. Pick the one to authorize.", candidates.map((c) => c.id))
|
|
372
|
+
: null;
|
|
373
|
+
if (picked === null) {
|
|
374
|
+
return ambiguityFallbackError({
|
|
375
|
+
code: "credential_ambiguous",
|
|
376
|
+
paramName: "credential_id",
|
|
377
|
+
what: "OAuth credentials",
|
|
378
|
+
candidates,
|
|
379
|
+
extraDetails: { provider },
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
resolvedCredentialId = picked;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
277
385
|
// Wire-key alignment with PHP OAuthController (audit F-A3-01 + F-A3-02):
|
|
278
386
|
// - Request: PHP reads `existing_credential_id` (not `credential_id`).
|
|
279
387
|
// Wave 1B accepted both, but sending the canonical key directly is
|
|
@@ -284,17 +392,62 @@ export function registerCredentialTools(server) {
|
|
|
284
392
|
// before or after the alias ships.
|
|
285
393
|
const r = await request("/oauth/authorize", {
|
|
286
394
|
method: "POST",
|
|
287
|
-
body: JSON.stringify({ existing_credential_id:
|
|
395
|
+
body: JSON.stringify({ existing_credential_id: resolvedCredentialId, scopes }),
|
|
288
396
|
});
|
|
289
397
|
if (!r.success) {
|
|
290
|
-
return
|
|
398
|
+
return restErrorResult(r, { credential_id: resolvedCredentialId }, { message: "oauth authorize failed" });
|
|
291
399
|
}
|
|
292
400
|
const authorizeUrl = r.data?.authorize_url ?? r.data?.authorization_url;
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
401
|
+
// F-7.1 (Pass-1 consolidation) — terminal URL UX.
|
|
402
|
+
//
|
|
403
|
+
// Thomas live-smoked the bug: Claude Code rendered the authorize URL
|
|
404
|
+
// inside a JSON.stringify(_, null, 2) payload, so triple-click
|
|
405
|
+
// copied the indented text and the URL pasted into the browser with
|
|
406
|
+
// line-breaks + leading whitespace.
|
|
407
|
+
//
|
|
408
|
+
// Best-practice consensus (see citations below) is to surface the
|
|
409
|
+
// URL as BARE text on its own line:
|
|
410
|
+
// - URL alone on its own line, no leading whitespace, no trailing
|
|
411
|
+
// punctuation.
|
|
412
|
+
// - Blank lines above + below so triple-click selects only the URL.
|
|
413
|
+
// - NO markdown link wrap `[label](url)` — claude-code#30162
|
|
414
|
+
// anti-pattern (masks URL, breaks copy).
|
|
415
|
+
// - NO fenced code block around the URL — terminal URL-detectors
|
|
416
|
+
// are inconsistent inside ```.
|
|
417
|
+
// - NO JSON-pretty-print around the URL — that's the bug.
|
|
418
|
+
// - NO server-emitted OSC-8 escape — Claude Code auto-wraps bare
|
|
419
|
+
// URLs (claude-code#13008); double-wrap is broken, and Warp /
|
|
420
|
+
// macOS Terminal / tmux+Claude Code paths have no OSC-8 fallback
|
|
421
|
+
// (claude-code#27047, Warp#6393).
|
|
422
|
+
// - structuredContent still carries the URL + state + credential_id
|
|
423
|
+
// for programmatic consumers (MCP spec 2025-06-18 — structured
|
|
424
|
+
// JSON mirror alongside text content).
|
|
425
|
+
//
|
|
426
|
+
// Citations: MCP spec 2025-06-18 server/tools section; claude-code
|
|
427
|
+
// issues #13008, #30162, #27047; Warp#6393; Notion MCP plain-URL
|
|
428
|
+
// pattern (github.com/makenotion/notion-mcp-server).
|
|
429
|
+
const lines = [
|
|
430
|
+
"Open this URL in your browser to authorize the credential:",
|
|
431
|
+
"",
|
|
432
|
+
authorizeUrl ?? "(no authorize URL returned)",
|
|
433
|
+
"",
|
|
434
|
+
`After approval, call apimapper_credential_get({ id: "${resolvedCredentialId}" }) to verify the credential was populated.`,
|
|
435
|
+
];
|
|
436
|
+
if (r.data?.state) {
|
|
437
|
+
lines.push("", `State: ${r.data.state}`);
|
|
438
|
+
}
|
|
439
|
+
if (scopes && scopes.length > 0) {
|
|
440
|
+
lines.push(`Scopes: ${scopes.join(", ")}`);
|
|
441
|
+
}
|
|
442
|
+
return {
|
|
443
|
+
content: [{ type: "text", text: lines.join("\n") }],
|
|
444
|
+
structuredContent: {
|
|
445
|
+
authorize_url: authorizeUrl,
|
|
446
|
+
credential_id: resolvedCredentialId,
|
|
447
|
+
state: r.data?.state,
|
|
448
|
+
...(scopes && scopes.length > 0 ? { scopes } : {}),
|
|
449
|
+
},
|
|
450
|
+
};
|
|
298
451
|
});
|
|
299
452
|
}
|
|
300
453
|
//# 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 {
|
|
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:
|
|
70
|
+
export declare function registerDiagnoseTool(server: ToolRegistrar): void;
|