@koda-sl/baker-cli 0.140.2-dev.253d2418a → 0.141.0-dev.5c3f9a4ae

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/README.md CHANGED
@@ -2525,11 +2525,12 @@ Permissions enforced server-side:
2525
2525
 
2526
2526
  ---
2527
2527
 
2528
- ### `baker mcp list | add | remove`
2528
+ ### `baker mcp connected | list | add | remove`
2529
2529
 
2530
- Manage **custom MCP servers** — point the agent at any remote HTTPS MCP endpoint. Registered tools appear as `mcp__<name>__*` on the next chat message.
2530
+ See every third-party tool a chat can reach (managed integrations + custom servers) and manage **custom MCP servers** — point the agent at any remote HTTPS MCP endpoint. Registered tools appear as `mcp__<name>__*` on the next chat message.
2531
2531
 
2532
2532
  ```bash
2533
+ baker mcp connected
2533
2534
  baker mcp list
2534
2535
  baker mcp add --name weather --url https://mcp.example.com/mcp
2535
2536
  baker mcp add --name acme --url https://acme.dev/mcp --header "Authorization: Bearer sk-…"
package/dist/cli.js CHANGED
@@ -3013,7 +3013,7 @@ var createCommand = defineCommand3({
3013
3013
  const hints = [];
3014
3014
  if (looksScheduled(name, args.description ?? "")) {
3015
3015
  hints.push(
3016
- 'This reads as recurring/scheduled work. If it should run on a cadence or a future date, create a Scheduled Action instead \u2014 baker scheduled-actions create --cron "0 9 * * MON" (or --run-at). Do NOT capture "set up a scheduled action" as a Work Action.'
3016
+ 'This reads as recurring/scheduled work. If it should run on a cadence or a future date, create a Scheduled Action instead \u2014 baker scheduled-actions create --cron "0 9 * * MON" (or --run-at; guide: __tooling__/docs/tools/baker/scheduled-actions.md). Do NOT capture "set up a scheduled action" as a Work Action.'
3017
3017
  );
3018
3018
  }
3019
3019
  hints.push(`Link dependencies: baker actions link --blocker <id> --blocked ${tempId}`);
@@ -26045,6 +26045,53 @@ function fail4(err) {
26045
26045
  writeJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
26046
26046
  process.exit(1);
26047
26047
  }
26048
+ registerSchema({
26049
+ command: "mcp.connected",
26050
+ description: "List every third-party tool this chat can reach: managed integrations (Attio, Slack, Gmail, Google Sheets, \u2026) plus custom MCP servers. Start here when the user mentions an external tool.",
26051
+ args: {}
26052
+ });
26053
+ var connectedCommand = defineCommand133({
26054
+ meta: {
26055
+ name: "connected",
26056
+ description: `List all connected third-party tools \u2014 managed integrations plus custom MCP servers.
26057
+
26058
+ Managed tools ride the composio servers (mcp__composio_<scope>__*); custom servers expose mcp__<name>__*.
26059
+ A tool the user names that is NOT listed here is simply not connected yet.`
26060
+ },
26061
+ run: async () => {
26062
+ try {
26063
+ const user = actingUserId();
26064
+ const data = await apiGet("/api/mcp/connected", user ? { actingUserId: user } : void 0);
26065
+ const managed = data.managed.map((c) => ({
26066
+ toolkit: c.toolkitSlug,
26067
+ scope: c.scope,
26068
+ ...c.status !== "ACTIVE" ? { status: c.status } : {},
26069
+ ...c.accountLabel ? { account: c.accountLabel } : {},
26070
+ ...c.readOnly ? { readOnly: true } : {}
26071
+ }));
26072
+ const custom = data.custom.map((s) => ({ name: s.name, scope: s.scope, enabled: s.enabled }));
26073
+ const hints = [];
26074
+ if (data.managedDisabled) {
26075
+ hints.push("Managed integrations are disabled for this company \u2014 only custom MCP servers load.");
26076
+ }
26077
+ if ([...data.managed, ...data.custom].some((e) => e.scope === "user" || e.scope === "user_org")) {
26078
+ hints.push(
26079
+ "user/user_org entries are personal: they belong to the current message sender and load only in their turns \u2014 other users in this chat won't have them."
26080
+ );
26081
+ }
26082
+ hints.push(
26083
+ "Not listed = not connected. Managed app (Slack, HubSpot, Attio, \u2026) \u2192 the user connects it in the dashboard: Brain \u2192 Integrations \u2192 Tools. Custom HTTPS MCP endpoint \u2192 `baker mcp add`."
26084
+ );
26085
+ writeJson({
26086
+ ok: true,
26087
+ data: { ...data.managedDisabled ? { managedDisabled: true } : {}, managed, custom },
26088
+ hints
26089
+ });
26090
+ } catch (err) {
26091
+ fail4(err);
26092
+ }
26093
+ }
26094
+ });
26048
26095
  registerSchema({
26049
26096
  command: "mcp.list",
26050
26097
  description: "List the custom MCP servers this company's chats see (org + company + your own user scope).",
@@ -26141,13 +26188,13 @@ Example:
26141
26188
  var mcpCommand = defineCommand133({
26142
26189
  meta: {
26143
26190
  name: "mcp",
26144
- description: `Custom MCP servers for this company \u2014 point the agent at any HTTPS MCP endpoint.
26191
+ description: `Third-party tools for this company \u2014 see what's connected, register custom HTTPS MCP endpoints.
26145
26192
 
26146
26193
  Tools from a registered server appear as mcp__<name>__* on the next message.
26147
26194
  Managed here are **company-scoped** servers; user- and org-scoped servers are managed in the dashboard.
26148
26195
 
26149
26196
  Start here:
26150
- baker mcp list
26197
+ baker mcp connected # everything this chat can reach: managed integrations + custom servers
26151
26198
 
26152
26199
  Examples:
26153
26200
  baker mcp add --name weather --url https://mcp.example.com/mcp
@@ -26156,6 +26203,7 @@ Examples:
26156
26203
  Full guide: __tooling__/docs/tools/baker/mcp.md`
26157
26204
  },
26158
26205
  subCommands: {
26206
+ connected: connectedCommand,
26159
26207
  list: listCommand8,
26160
26208
  add: addCommand,
26161
26209
  remove: removeCommand4