@warmio/mcp 11.0.5 → 11.0.7

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
@@ -3,19 +3,58 @@
3
3
  `@warmio/mcp` is Warm's local stdio MCP server. Run the interactive installer to validate and store one full-access `WARM_API_KEY`, then configure detected supported clients:
4
4
 
5
5
  ```sh
6
- npx -y @warmio/mcp@latest install
6
+ npx -y @warmio/mcp@11.0.7 install
7
7
  ```
8
8
 
9
- Each client starts the server with:
9
+ Each client starts the server with the exact pinned package spec from `@warmio/contracts/mcp` (currently `@warmio/mcp@11.0.7`):
10
10
 
11
11
  ```sh
12
- npx -y @warmio/mcp@latest mcp
12
+ npx -y @warmio/mcp@11.0.7 mcp
13
13
  ```
14
14
 
15
- The server exposes financial-context read tools plus the automation operation catalog. The installer
16
- stores the local credential with owner-only file permissions. Importing `@warmio/mcp` exposes the
17
- library API without starting the CLI.
15
+ The server exposes financial-context read tools plus the automation operation catalog. The installer stores the local credential with owner-only file permissions. Importing `@warmio/mcp` exposes the library API without starting the CLI.
18
16
 
19
- ## Cursor Marketplace
17
+ ## Environment precedence
20
18
 
21
- For Cursor users, install the official [Warm plugin](https://cursor.com/marketplace) directly from the Cursor Marketplace for one-click setup. The plugin is also available at [`.cursor-plugin/`](.cursor-plugin/) in this package.
19
+ Credential and config resolution is fixed and never loaded from ancestor or project `.env` files by default:
20
+
21
+ 1. `WARM_API_KEY` — direct process environment value wins over every file-backed credential.
22
+ 2. `WARM_API_KEY_FILE` — overrides the default stored-key path (`$WARM_CONFIG_DIR/api_key` or the platform default Warm config directory).
23
+ 3. `WARM_CONFIG_DIR` — overrides the default Warm config directory used for the stored API key file.
24
+
25
+ API traffic always uses the canonical `API_ORIGIN` (`https://app.warm.io`). The only supported endpoint override is an explicit programmatic `apiUrl` option passed by trusted callers such as tests; ambient `WARM_API_URL` and project `.env` values are ignored.
26
+
27
+ Optional local development: set `WARM_LOAD_PROJECT_ENV=1` before starting the CLI to load only `process.cwd()/.env`. Even with that opt-in, `WARM_API_KEY`, `WARM_API_KEY_FILE`, `WARM_CONFIG_DIR`, and `WARM_API_URL` are blocked and must be supplied through the process environment or installer storage instead.
28
+
29
+ ## Launcher integrity contract
30
+
31
+ Generated launcher configs pin an exact package version (`@warmio/mcp@<version>`), never `@latest`. The release manifest records a `packageIntegrity` contract whose `registryIntegrity` value is populated only after the trusted publish workflow (`.github/workflows/publish-mcp.yml`) completes npm registry readback for the pinned version. Until that gate passes, treat `registryIntegrity: null` as an external deployment requirement rather than a local hash to copy by hand.
32
+
33
+ Set `WARM_MCP_REQUIRE_REGISTRY_INTEGRITY=1` to require an exact registry readback. When the manifest still has `registryIntegrity: null`, set `WARM_MCP_REGISTRY_INTEGRITY` to the trusted workflow's `dist.integrity` value. The gate rejects missing or malformed values. Default installs and launcher generation remain allowed until this opt-in gate is enabled.
34
+
35
+ ## Claude Desktop Extension
36
+
37
+ For Claude Desktop users, a packaged `.mcpb` extension is available in `mcpb/`. To build it:
38
+
39
+ ```sh
40
+ cd mcpb
41
+ pnpm install
42
+ pnpm pack
43
+ ```
44
+
45
+ This produces `warm.mcpb` which can be installed via double-click or drag-and-drop into Claude Desktop.
46
+ The extension uses the same API key authentication as the CLI but provides a settings UI for key entry.
47
+
48
+ ## Cursor Plugin
49
+
50
+ The official Cursor plugin packaging lives in a separate public repository:
51
+
52
+ **https://github.com/jasonstockman/warm-cursor-plugin**
53
+
54
+ This package (`@warmio/mcp`) is the MCP implementation. The public plugin repo contains only:
55
+
56
+ - `.cursor-plugin/plugin.json` — Plugin metadata and marketplace configuration
57
+ - `skills/warm/SKILL.md` — Agent-facing tool documentation
58
+ - User-facing installation and usage docs
59
+
60
+ When tool schemas or behavior change here, update `skills/warm/SKILL.md` in the plugin repo to keep agent docs in sync.
package/dist/cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // This entrypoint is intentionally separate from the package root so importing
3
3
  // @warmio/mcp remains side-effect free while the executable can dispatch CLI commands.
4
4
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
5
- import { WARM_MCP_INSTALLER_COMMAND, WARM_MCP_SERVER_COMMAND } from '@warmio/contracts/mcp';
5
+ import { assertWarmMcpLauncherContract, maybeRequireWarmMcpRegistryIntegrity, WARM_MCP_MANIFEST, WARM_MCP_INSTALLER_COMMAND, WARM_MCP_SERVER_COMMAND, } from '@warmio/contracts/mcp';
6
6
  import { install } from './install.js';
7
7
  import { loadDotEnv } from './load-env.js';
8
8
  import { createWarmServer } from './server.js';
@@ -13,6 +13,8 @@ async function main(args) {
13
13
  loadDotEnv();
14
14
  const command = args[0] || (process.stdin.isTTY && process.stdout.isTTY ? 'install' : 'mcp');
15
15
  if (command === 'mcp') {
16
+ assertWarmMcpLauncherContract(WARM_MCP_MANIFEST);
17
+ maybeRequireWarmMcpRegistryIntegrity(WARM_MCP_MANIFEST.packageIntegrity.registryIntegrity);
16
18
  const server = createWarmServer();
17
19
  await server.connect(new StdioServerTransport());
18
20
  return;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,+EAA+E;AAC/E,uFAAuF;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,SAAS,KAAK;IACZ,OAAO,CAAC,GAAG,CAAC,UAAU,0BAA0B,gBAAgB,uBAAuB,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAc;IAChC,UAAU,EAAE,CAAC;IACb,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7F,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QACjF,IAAI,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,eAAe,EAAE,CAAC,CAAC;QAC7E,MAAM,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,+EAA+E;AAC/E,uFAAuF;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,6BAA6B,EAC7B,oCAAoC,EACpC,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,SAAS,KAAK;IACZ,OAAO,CAAC,GAAG,CAAC,UAAU,0BAA0B,gBAAgB,uBAAuB,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAc;IAChC,UAAU,EAAE,CAAC;IACb,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7F,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;QACjD,oCAAoC,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QACjF,IAAI,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,eAAe,EAAE,CAAC,CAAC;QAC7E,MAAM,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-paths.d.ts","sourceRoot":"","sources":["../src/config-paths.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,IAAI,MAAM,CAUzC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMhE"}
1
+ {"version":3,"file":"config-paths.d.ts","sourceRoot":"","sources":["../src/config-paths.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,IAAI,MAAM,CAazC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMhE"}
@@ -3,13 +3,13 @@ import * as os from 'node:os';
3
3
  import * as path from 'node:path';
4
4
  import { WARM_MCP_CREDENTIALS } from '@warmio/contracts/mcp';
5
5
  export function getWarmConfigDir() {
6
- if (process.env.WARM_CONFIG_DIR?.trim())
7
- return process.env.WARM_CONFIG_DIR.trim();
6
+ if (process.env['WARM_CONFIG_DIR']?.trim())
7
+ return process.env['WARM_CONFIG_DIR'].trim();
8
8
  if (process.platform === 'win32') {
9
- return path.join(process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'), 'Warm');
9
+ return path.join(process.env['APPDATA'] || path.join(os.homedir(), 'AppData', 'Roaming'), 'Warm');
10
10
  }
11
- if (process.env.XDG_CONFIG_HOME?.trim())
12
- return path.join(process.env.XDG_CONFIG_HOME.trim(), 'warm');
11
+ if (process.env['XDG_CONFIG_HOME']?.trim())
12
+ return path.join(process.env['XDG_CONFIG_HOME'].trim(), 'warm');
13
13
  return process.platform === 'darwin'
14
14
  ? path.join(os.homedir(), 'Library', 'Application Support', 'Warm')
15
15
  : path.join(os.homedir(), '.config', 'warm');
@@ -1 +1 @@
1
- {"version":3,"file":"config-paths.js","sourceRoot":"","sources":["../src/config-paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IACnF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/D,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAClC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,CAAC;QACnE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IACzE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config-paths.js","sourceRoot":"","sources":["../src/config-paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC;IACzF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,EACvE,MAAM,CACP,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAClC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,CAAC;QACnE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IACzE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAsCA,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAMF,MAAM,WAAW,cAAc;IAC7B,gGAAgG;IAChG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,KAAK,CAAC;IACnC,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,0EAA0E;IAC1E,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7E;AA2WD,2EAA2E;AAC3E,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCzE"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAyCA,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAcF,MAAM,WAAW,cAAc;IAC7B,gGAAgG;IAChG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,KAAK,CAAC;IACnC,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,0EAA0E;IAC1E,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7E;AAgXD,2EAA2E;AAC3E,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCzE"}
package/dist/install.js CHANGED
@@ -4,8 +4,11 @@ import * as os from 'node:os';
4
4
  import * as path from 'node:path';
5
5
  import { createInterface } from 'node:readline';
6
6
  import { API_ORIGIN, WARM_API_KEY_PREFIX } from '@warmio/contracts/api';
7
- import { WARM_MCP_CLIENTS, WARM_MCP_PROJECT_CONFIGS, WARM_MCP_SERVER_CONFIG, } from '@warmio/contracts/mcp';
7
+ import { assertWarmMcpLauncherContract, maybeRequireWarmMcpRegistryIntegrity, WARM_MCP_CLIENTS, WARM_MCP_MANIFEST, WARM_MCP_PROJECT_CONFIGS, WARM_MCP_SERVER_CONFIG, } from '@warmio/contracts/mcp';
8
8
  import { getWarmApiKeyPath } from './config-paths.js';
9
+ function hasReadlineWriter(readline) {
10
+ return '_writeToOutput' in readline && readline._writeToOutput instanceof Function;
11
+ }
9
12
  // Client configuration is intentionally an open JSON object owned by each MCP client.
10
13
  // oxlint-disable-next-line anti-slop/no-unknown-parameters -- filesystem JSON is decoded at this object guard.
11
14
  function isRecord(value) {
@@ -15,7 +18,7 @@ function isRecord(value) {
15
18
  const API_KEY_PATTERN = new RegExp(`^${WARM_API_KEY_PREFIX}[A-Za-z0-9_-]{43}$`);
16
19
  function configPath(config, homeDir) {
17
20
  const root = config.root === 'appData'
18
- ? process.env.APPDATA?.trim() || path.join(homeDir, 'AppData', 'Roaming')
21
+ ? process.env['APPDATA']?.trim() || path.join(homeDir, 'AppData', 'Roaming')
19
22
  : homeDir;
20
23
  return path.join(root, ...config.segments);
21
24
  }
@@ -58,19 +61,19 @@ function isCurrentWarmConfig(client, server) {
58
61
  if (!isRecord(server))
59
62
  return false;
60
63
  if (client.configDialect === 'openCode') {
61
- return (server.type === 'local' &&
62
- Array.isArray(server.command) &&
63
- server.command.length === WARM_MCP_SERVER_CONFIG.args.length + 1 &&
64
- server.command[0] === WARM_MCP_SERVER_CONFIG.command &&
65
- server.command
64
+ return (server['type'] === 'local' &&
65
+ Array.isArray(server['command']) &&
66
+ server['command'].length === WARM_MCP_SERVER_CONFIG.args.length + 1 &&
67
+ server['command'][0] === WARM_MCP_SERVER_CONFIG.command &&
68
+ server['command']
66
69
  .slice(1)
67
70
  .every((argument, index) => argument === WARM_MCP_SERVER_CONFIG.args[index]) &&
68
71
  Object.keys(server).length === 2);
69
72
  }
70
- return (server.command === WARM_MCP_SERVER_CONFIG.command &&
71
- Array.isArray(server.args) &&
72
- server.args.length === WARM_MCP_SERVER_CONFIG.args.length &&
73
- server.args.every((argument, index) => argument === WARM_MCP_SERVER_CONFIG.args[index]) &&
73
+ return (server['command'] === WARM_MCP_SERVER_CONFIG.command &&
74
+ Array.isArray(server['args']) &&
75
+ server['args'].length === WARM_MCP_SERVER_CONFIG.args.length &&
76
+ server['args'].every((argument, index) => argument === WARM_MCP_SERVER_CONFIG.args[index]) &&
74
77
  Object.keys(server).length === 2);
75
78
  }
76
79
  function parseJsonConfig(client, content) {
@@ -93,7 +96,7 @@ function existingWarmConfig(client) {
93
96
  : '';
94
97
  const section = content.match(WARM_TOML_BLOCK)?.[0];
95
98
  return {
96
- current: Boolean(section) &&
99
+ current: section !== undefined &&
97
100
  !content.includes('[mcp_servers.warm.env]') &&
98
101
  section.trim() ===
99
102
  [
@@ -106,42 +109,44 @@ function existingWarmConfig(client) {
106
109
  }
107
110
  const config = readJsonConfig(client);
108
111
  if (client.configDialect === 'openCode') {
109
- const servers = isRecord(config.mcp) ? config.mcp : {};
110
- const legacyServers = isRecord(config.mcpServers) ? config.mcpServers : {};
112
+ const servers = isRecord(config['mcp']) ? config['mcp'] : {};
113
+ const legacyServers = isRecord(config['mcpServers']) ? config['mcpServers'] : {};
111
114
  const hasLegacyWarmConfig = 'warm' in legacyServers;
112
115
  return {
113
- current: isRecord(servers.warm) && isCurrentWarmConfig(client, servers.warm) && !hasLegacyWarmConfig,
116
+ current: isRecord(servers['warm']) &&
117
+ isCurrentWarmConfig(client, servers['warm']) &&
118
+ !hasLegacyWarmConfig,
114
119
  exists: 'warm' in servers || hasLegacyWarmConfig,
115
120
  };
116
121
  }
117
- const servers = isRecord(config.mcpServers) ? config.mcpServers : {};
122
+ const servers = isRecord(config['mcpServers']) ? config['mcpServers'] : {};
118
123
  return {
119
- current: isRecord(servers.warm) && isCurrentWarmConfig(client, servers.warm),
124
+ current: isRecord(servers['warm']) && isCurrentWarmConfig(client, servers['warm']),
120
125
  exists: 'warm' in servers,
121
126
  };
122
127
  }
123
128
  function prepareJsonConfig(client, current) {
124
129
  const config = parseJsonConfig(client, current);
125
130
  if (client.configDialect === 'openCode') {
126
- const servers = isRecord(config.mcp) ? config.mcp : {};
127
- servers.warm = {
131
+ const servers = isRecord(config['mcp']) ? config['mcp'] : {};
132
+ servers['warm'] = {
128
133
  type: 'local',
129
134
  command: [WARM_MCP_SERVER_CONFIG.command, ...WARM_MCP_SERVER_CONFIG.args],
130
135
  };
131
- config.mcp = servers;
132
- if (isRecord(config.mcpServers) && 'warm' in config.mcpServers) {
133
- delete config.mcpServers.warm;
134
- if (Object.keys(config.mcpServers).length === 0)
135
- delete config.mcpServers;
136
+ config['mcp'] = servers;
137
+ if (isRecord(config['mcpServers']) && 'warm' in config['mcpServers']) {
138
+ delete config['mcpServers']['warm'];
139
+ if (Object.keys(config['mcpServers']).length === 0)
140
+ delete config['mcpServers'];
136
141
  }
137
142
  return `${JSON.stringify(config, null, 2)}\n`;
138
143
  }
139
- const servers = isRecord(config.mcpServers) ? config.mcpServers : {};
140
- servers.warm = {
144
+ const servers = isRecord(config['mcpServers']) ? config['mcpServers'] : {};
145
+ servers['warm'] = {
141
146
  command: WARM_MCP_SERVER_CONFIG.command,
142
147
  args: [...WARM_MCP_SERVER_CONFIG.args],
143
148
  };
144
- config.mcpServers = servers;
149
+ config['mcpServers'] = servers;
145
150
  return `${JSON.stringify(config, null, 2)}\n`;
146
151
  }
147
152
  function prepareTomlConfig(current) {
@@ -262,11 +267,13 @@ function readlinePrompt(question, options) {
262
267
  input: process.stdin,
263
268
  output: process.stdout,
264
269
  });
265
- const maskedReadline = readline;
266
- const writeToOutput = maskedReadline._writeToOutput?.bind(readline);
267
- if (options.hidden && writeToOutput && process.stdin.isTTY && process.stdout.isTTY) {
268
- writeToOutput(question);
269
- maskedReadline._writeToOutput = (value) => writeToOutput(value.replace(/[^\r\n]/g, '•'));
270
+ if (options.hidden &&
271
+ hasReadlineWriter(readline) &&
272
+ process.stdin.isTTY &&
273
+ process.stdout.isTTY) {
274
+ const writeToOutput = readline._writeToOutput;
275
+ writeToOutput.call(readline, question);
276
+ readline._writeToOutput = (value) => writeToOutput.call(readline, value.replace(/[^\r\n]/g, '•'));
270
277
  }
271
278
  readline.question(options.hidden ? '' : question, (answer) => {
272
279
  readline.close();
@@ -286,7 +293,7 @@ async function validateApiKey(apiKey, options) {
286
293
  });
287
294
  const text = await response.text();
288
295
  const body = parseJsonResponse(text);
289
- if (!response.ok || !isRecord(body) || body.valid !== true || Object.keys(body).length !== 1) {
296
+ if (!response.ok || !isRecord(body) || body['valid'] !== true || Object.keys(body).length !== 1) {
290
297
  throw new Error('Warm API key validation failed. Check Warm Settings and try again.');
291
298
  }
292
299
  }
@@ -329,6 +336,8 @@ async function resolveApiKey(target, ask, options) {
329
336
  }
330
337
  /** Configure detected supported MCP clients for the local stdio server. */
331
338
  export async function install(options = {}) {
339
+ assertWarmMcpLauncherContract(WARM_MCP_MANIFEST);
340
+ maybeRequireWarmMcpRegistryIntegrity(WARM_MCP_MANIFEST.packageIntegrity.registryIntegrity);
332
341
  const homeDir = options.homeDir || os.homedir();
333
342
  const workingDirectory = options.workingDirectory || process.cwd();
334
343
  const ask = options.prompt || readlinePrompt;
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,5 @@
1
+ export declare const WARM_LOAD_PROJECT_ENV = "WARM_LOAD_PROJECT_ENV";
2
+ export declare const BLOCKED_PROJECT_ENV_KEYS: readonly ['WARM_API_KEY', 'WARM_API_KEY_FILE', 'WARM_CONFIG_DIR', 'WARM_API_URL'];
1
3
  export declare function loadDotEnv(): void;
4
+ export declare function resetLoadDotEnvState(): void;
2
5
  //# sourceMappingURL=load-env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-env.d.ts","sourceRoot":"","sources":["../src/load-env.ts"],"names":[],"mappings":"AAMA,wBAAgB,UAAU,IAAI,IAAI,CAWjC"}
1
+ {"version":3,"file":"load-env.d.ts","sourceRoot":"","sources":["../src/load-env.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D,eAAO,MAAM,wBAAwB,YACnC,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,CACN,CAAC;AAIX,wBAAgB,UAAU,IAAI,IAAI,CAajC;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
package/dist/load-env.js CHANGED
@@ -1,19 +1,33 @@
1
1
  import * as fs from 'node:fs';
2
2
  import * as path from 'node:path';
3
- import { config as loadEnvFile } from 'dotenv';
3
+ import { parse as parseEnvFile } from 'dotenv';
4
4
  let loaded = false;
5
+ export const WARM_LOAD_PROJECT_ENV = 'WARM_LOAD_PROJECT_ENV';
6
+ export const BLOCKED_PROJECT_ENV_KEYS = [
7
+ 'WARM_API_KEY',
8
+ 'WARM_API_KEY_FILE',
9
+ 'WARM_CONFIG_DIR',
10
+ 'WARM_API_URL',
11
+ ];
12
+ const blockedProjectEnvKeys = new Set(BLOCKED_PROJECT_ENV_KEYS);
5
13
  export function loadDotEnv() {
6
14
  if (loaded)
7
15
  return;
8
16
  loaded = true;
9
- for (let current = process.cwd();; current = path.dirname(current)) {
10
- const candidate = path.join(current, '.env');
11
- if (fs.existsSync(candidate)) {
12
- loadEnvFile({ path: candidate, override: false, quiet: true });
13
- return;
14
- }
15
- if (path.dirname(current) === current)
16
- return;
17
+ if (process.env[WARM_LOAD_PROJECT_ENV]?.trim() !== '1')
18
+ return;
19
+ const candidate = path.join(process.cwd(), '.env');
20
+ if (!fs.existsSync(candidate))
21
+ return;
22
+ const parsed = parseEnvFile(fs.readFileSync(candidate));
23
+ for (const [key, value] of Object.entries(parsed)) {
24
+ if (blockedProjectEnvKeys.has(key))
25
+ continue;
26
+ if (process.env[key] === undefined)
27
+ process.env[key] = value;
17
28
  }
18
29
  }
30
+ export function resetLoadDotEnvState() {
31
+ loaded = false;
32
+ }
19
33
  //# sourceMappingURL=load-env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-env.js","sourceRoot":"","sources":["../src/load-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE/C,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,UAAU,UAAU;IACxB,IAAI,MAAM;QAAE,OAAO;IACnB,MAAM,GAAG,IAAI,CAAC;IACd,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,GAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO;YAAE,OAAO;IAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"load-env.js","sourceRoot":"","sources":["../src/load-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE/C,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAE7D,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,cAAc;IACd,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;CACN,CAAC;AAEX,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,CAAC;AAExE,MAAM,UAAU,UAAU;IACxB,IAAI,MAAM;QAAE,OAAO;IACnB,MAAM,GAAG,IAAI,CAAC;IACd,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO;IAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO;IAEtC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IACxD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,KAAK,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAKL,KAAK,cAAc,EAEpB,MAAM,oCAAoC,CAAC;AAS5C,OAAO,EAIL,KAAK,4BAA4B,EAEjC,KAAK,oBAAoB,EAE1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE/F,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AACD,MAAM,WAAW,yBAA0B,SAAQ,4BAA4B;IAC7E,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAgBD,eAAO,MAAM,gBAAgB;IAAK,IAAI;IAAU,OAAO;CAAoB,CAAC;AAwI5E,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,SAAS,CAM3E;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,SAAS,CAKtF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAKL,KAAK,cAAc,EAGpB,MAAM,oCAAoC,CAAC;AAS5C,OAAO,EAIL,KAAK,4BAA4B,EAEjC,KAAK,oBAAoB,EAE1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE/F,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AACD,MAAM,WAAW,yBAA0B,SAAQ,4BAA4B;IAC7E,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAgBD,eAAO,MAAM,gBAAgB;IAAK,IAAI;IAAU,OAAO;CAAoB,CAAC;AA+K5E,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,SAAS,CAM3E;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,SAAS,CAKtF"}
package/dist/server.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import * as fs from 'node:fs';
2
2
  /* oxlint-disable anti-slop/no-shape-in-symbol-names -- inputShape and ZodRawShape are canonical MCP/Zod contract terms. */
3
3
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
- import { toJsonSchemaCompat } from '@modelcontextprotocol/sdk/server/zod-json-schema-compat.js';
5
4
  import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } from '@modelcontextprotocol/sdk/types.js';
6
5
  import { z } from 'zod';
7
6
  import { getTransactionsMcpInputSchema, normalizeGetTransactionsMcpInput, privateMcpToolDefinitions, privateMcpToolDescriptors, } from '@warmio/contracts/mcp';
@@ -20,7 +19,7 @@ export const WARM_SERVER_INFO = { name: 'warm', version: packageVersion() };
20
19
  // oxlint-disable-next-line anti-slop/no-object-parameters -- MCP structured content requires a JSON object result.
21
20
  function structuredResult(value, isError = false) {
22
21
  return {
23
- content: [{ type: 'text', text: JSON.stringify(value, null, 2) }],
22
+ content: [{ type: 'text', text: JSON.stringify(value) }],
24
23
  ...(isError ? { isError: true } : { structuredContent: value }),
25
24
  };
26
25
  }
@@ -49,6 +48,9 @@ function mcpOutputSchema(name) {
49
48
  ? outputSchema
50
49
  : { ...outputSchema, type: 'object' };
51
50
  }
51
+ function isMcpToolInputSchema(value) {
52
+ return 'type' in value && value.type === 'object';
53
+ }
52
54
  function readToolDefinitions(client) {
53
55
  return [
54
56
  {
@@ -57,7 +59,7 @@ function readToolDefinitions(client) {
57
59
  },
58
60
  {
59
61
  ...descriptor('get_transactions'),
60
- handler: async (args) => await client.getTransactions(normalizeGetTransactionsMcpInput(getTransactionsMcpInputSchema.parse(args))),
62
+ handler: async (args) => await client.getTransactions(normalizeGetTransactionsMcpInput(args)),
61
63
  },
62
64
  ];
63
65
  }
@@ -65,47 +67,61 @@ function automationToolDefinitions(client) {
65
67
  return [
66
68
  {
67
69
  ...descriptor('search_operations'),
68
- handler: async (args) => await client.searchOperations(z.string().optional().parse(args.query)),
70
+ handler: async (args) => await client.searchOperations(z.string().optional().parse(args['query'])),
69
71
  },
70
72
  {
71
73
  ...descriptor('describe_operation'),
72
- handler: async (args) => await client.describeOperation(z.string().parse(args.operation_id), automationInputSchema.optional().parse(args.input)),
74
+ handler: async (args) => await client.describeOperation(z.string().parse(args['operation_id']), automationInputSchema.optional().parse(args['input'])),
73
75
  },
74
76
  {
75
77
  ...descriptor('invoke_operation'),
76
- handler: async (args) => await client.invokeOperation(z.string().parse(args.operation_id), automationInputSchema.optional().parse(args.input), z.string().uuid().optional().parse(args.approval_id)),
78
+ handler: async (args) => await client.invokeOperation(z.string().parse(args['operation_id']), automationInputSchema.optional().parse(args['input']), z.string().uuid().optional().parse(args['approval_id'])),
77
79
  },
78
80
  ];
79
81
  }
80
82
  function registerTools(server, tools) {
81
83
  server.server.registerCapabilities({ tools: { listChanged: true } });
82
84
  server.server.setRequestHandler(ListToolsRequestSchema, () => ({
83
- tools: tools.map((tool) => ({
84
- annotations: tool.annotations,
85
- description: tool.description,
86
- inputSchema: toJsonSchemaCompat(z.object(tool.inputShape).strict(), {
87
- pipeStrategy: 'input',
88
- strictUnions: true,
89
- }),
90
- outputSchema: mcpOutputSchema(tool.name),
91
- name: tool.name,
92
- })),
85
+ tools: tools.map((tool) => {
86
+ const inputSchema = canonicalToolDescriptor(tool.name).input_schema;
87
+ if (!isMcpToolInputSchema(inputSchema)) {
88
+ throw new Error(`Invalid MCP input schema for ${tool.name}.`);
89
+ }
90
+ return {
91
+ annotations: tool.annotations,
92
+ description: tool.description,
93
+ inputSchema,
94
+ outputSchema: mcpOutputSchema(tool.name),
95
+ name: tool.name,
96
+ };
97
+ }),
93
98
  }));
94
99
  server.server.setRequestHandler(CallToolRequestSchema, async (request) => {
95
100
  const tool = tools.find((candidate) => candidate.name === request.params.name);
96
101
  if (!tool)
97
102
  throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} not found`);
103
+ const invoke = async (name, handler) => {
104
+ try {
105
+ const result = await handler();
106
+ const invokeStatus = z.object({ status: z.number() }).safeParse(result);
107
+ return structuredResult(result, name === 'invoke_operation' && invokeStatus.success && invokeStatus.data.status >= 400);
108
+ }
109
+ catch (error) {
110
+ return toolFailure(error);
111
+ }
112
+ };
113
+ if (tool.name === 'get_transactions') {
114
+ const parsed = await getTransactionsMcpInputSchema.safeParseAsync(request.params.arguments ?? {});
115
+ if (!parsed.success)
116
+ throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for tool ${tool.name}: ${parsed.error.message}`);
117
+ return await invoke(tool.name, () => tool.handler(parsed.data));
118
+ }
98
119
  const parsed = await z
99
120
  .object(tool.inputShape)
100
121
  .strict()
101
122
  .safeParseAsync(request.params.arguments ?? {});
102
123
  if (!parsed.success)
103
124
  throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for tool ${tool.name}: ${parsed.error.message}`);
104
- if (tool.name === 'get_transactions') {
105
- const transactionInput = await getTransactionsMcpInputSchema.safeParseAsync(parsed.data);
106
- if (!transactionInput.success)
107
- throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for tool ${tool.name}: ${transactionInput.error.message}`);
108
- }
109
125
  try {
110
126
  const result = await tool.handler(parsed.data);
111
127
  const invokeStatus = z.object({ status: z.number() }).safeParse(result);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
- import type { AutomationInput, AutomationOperation, FinancialContext, FinancialContextMeta, LatestTransactions, TransactionMonth } from '@warmio/contracts/types';
2
- export type { AutomationInput, AutomationOperation, FinancialContext, FinancialContextMeta, LatestTransactions, TransactionMonth, } from '@warmio/contracts/types';
1
+ import type { normalizeGetTransactionsMcpInput } from '@warmio/contracts/mcp';
2
+ import type { AutomationInput, AutomationOperation, FinancialContext, FinancialContextMeta, FinancialContextTransactionsRequest, LatestTransactions, TransactionMonth } from '@warmio/contracts/types';
3
+ export type { AutomationInput, AutomationOperation, FinancialContext, FinancialContextMeta, FinancialContextTransactionsRequest, LatestTransactions, TransactionMonth, } from '@warmio/contracts/types';
4
+ export type FinancialContextMonth = Extract<FinancialContextTransactionsRequest, {
5
+ month: string;
6
+ }>['month'];
3
7
  export interface WarmApiClientOptions {
4
8
  apiKeyResolver?: () => string | null;
5
9
  apiUrl?: string;
@@ -9,13 +13,7 @@ export interface WarmApiClientOptions {
9
13
  export interface ReadOnlyWarmApiClientOptions extends Omit<WarmApiClientOptions, 'apiKeyResolver'> {
10
14
  accessTokenResolver: () => string | null;
11
15
  }
12
- export type GetTransactionsInput = {
13
- month: string;
14
- latest?: never;
15
- } | {
16
- latest: true;
17
- month?: never;
18
- };
16
+ export type GetTransactionsInput = ReturnType<typeof normalizeGetTransactionsMcpInput>;
19
17
  export type GetTransactionsOutput = TransactionMonth | LatestTransactions;
20
18
  export type AutomationOperationDescription = AutomationOperation & {
21
19
  input_schema: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"warm-api-client.d.ts","sourceRoot":"","sources":["../src/warm-api-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,KAAK,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;IAChG,mBAAmB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GACjC;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACpC,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAC1E,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,GAAG;IAEjE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,CAAC;AACF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,SAAS,EAAE,8BAA8B,CAAC;CAC3C;AACD,MAAM,WAAW,qBAAqB;IAEpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjD,uBAAuB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACzD,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC9E;AACD,MAAM,WAAW,aAAc,SAAQ,qBAAqB;IAC1D,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC,CAAC;IACjF,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAClG,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,OAAO,wBAAa,CAAC;AAOlC,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAKnD;AAED,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED,UAAU,eAAe,CAAC,KAAK;IAC7B,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAa,SAAQ,KAAK;IAGnC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC;IAF7C,YACE,OAAO,EAAE,MAAM,EACN,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAI5C;IAGD,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEpC;IACD,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF;AA2ID,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAErF;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,CAEvB"}
1
+ {"version":3,"file":"warm-api-client.d.ts","sourceRoot":"","sources":["../src/warm-api-client.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,17 @@
1
1
  import { API_ORIGIN, apiEndpointManifest } from '@warmio/contracts/api';
2
+ import { automationInvocationResponseSchema, automationOperationDescriptionResponseSchema, automationOperationSearchResponseSchema, financialContextMetaSchema, financialContextSchema, latestTransactionsSchema, transactionMonthSchema, } from '@warmio/contracts/schemas';
2
3
  import { WARM_MCP_CREDENTIALS, WARM_MCP_INSTALLER_COMMAND } from '@warmio/contracts/mcp';
3
4
  import { z } from 'zod';
4
5
  import { getWarmApiKeyPath, readConfigFile } from './config-paths.js';
5
6
  export const API_URL = API_ORIGIN;
6
- const DEFAULT_TIMEOUT_MS = Number(process.env.WARM_API_TIMEOUT_MS || 10_000) || 10_000;
7
- const endpointByOperationId = Object.fromEntries(apiEndpointManifest.map((endpoint) => [endpoint.operation_id, endpoint.path]));
7
+ const endpointByOperationId = new Map(apiEndpointManifest.map((endpoint) => [endpoint.operation_id, endpoint.path]));
8
+ function endpointFor(operationId) {
9
+ const endpoint = endpointByOperationId.get(operationId);
10
+ if (!endpoint)
11
+ throw new Error(`Unknown Warm API operation: ${operationId}`);
12
+ return endpoint;
13
+ }
14
+ const DEFAULT_TIMEOUT_MS = Number(process.env['WARM_API_TIMEOUT_MS'] || 10_000) || 10_000;
8
15
  let cachedApiKey;
9
16
  export function getConfiguredApiKey() {
10
17
  if (cachedApiKey !== undefined)
@@ -47,6 +54,29 @@ function parseResponseBody(text) {
47
54
  return text;
48
55
  }
49
56
  }
57
+ function parseDescribeOperationResponse(value) {
58
+ const parsed = automationOperationDescriptionResponseSchema.parse(value);
59
+ const output = { operation: parsed.operation };
60
+ if (parsed.approval) {
61
+ output.approval = parsed.approval;
62
+ }
63
+ return output;
64
+ }
65
+ function parseInvokeOperationResponse(value) {
66
+ const parsed = automationInvocationResponseSchema.parse(value);
67
+ return {
68
+ body: parsed.body,
69
+ headers: parsed.headers,
70
+ operation_id: parsed.operation_id,
71
+ status: parsed.status,
72
+ };
73
+ }
74
+ const describeOperationResponseParser = {
75
+ parse: parseDescribeOperationResponse,
76
+ };
77
+ const invokeOperationResponseParser = {
78
+ parse: parseInvokeOperationResponse,
79
+ };
50
80
  function errorFromResponse(response) {
51
81
  const knownMessages = new Map([
52
82
  [401, 'Invalid API key. Regenerate it in Warm Settings.'],
@@ -62,7 +92,7 @@ function createRequest(authorizationResolver, options) {
62
92
  const apiUrl = options.apiUrl || API_URL;
63
93
  const fetchImplementation = options.fetchImplementation || fetch;
64
94
  const requestTimeoutMs = options.requestTimeoutMs || DEFAULT_TIMEOUT_MS;
65
- return async (input) => {
95
+ return async (input, responseSchema) => {
66
96
  const token = authorizationResolver();
67
97
  if (!token)
68
98
  throw new Error(`No Warm API key configured. Run \"${WARM_MCP_INSTALLER_COMMAND}\" or set ${WARM_MCP_CREDENTIALS.apiKeyEnv}.`);
@@ -80,11 +110,16 @@ function createRequest(authorizationResolver, options) {
80
110
  Accept: 'application/json',
81
111
  Authorization: `Bearer ${token}`,
82
112
  };
83
- const requestInit = { headers, signal: requestSignal(requestTimeoutMs) };
84
- if (input.method)
113
+ const requestInit = {
114
+ headers,
115
+ signal: requestSignal(requestTimeoutMs),
116
+ };
117
+ if (input.method) {
85
118
  requestInit.method = input.method;
86
- if (input.body)
119
+ }
120
+ if (input.body) {
87
121
  requestInit.body = JSON.stringify(input.body);
122
+ }
88
123
  const response = await fetchImplementation(url, requestInit);
89
124
  const text = await response.text();
90
125
  const body = parseResponseBody(text);
@@ -95,23 +130,24 @@ function createRequest(authorizationResolver, options) {
95
130
  };
96
131
  if (!response.ok)
97
132
  throw errorFromResponse(apiResponse);
98
- return body;
133
+ return responseSchema.parse(body);
99
134
  };
100
135
  }
101
136
  function createReadOnlyClient(request) {
102
137
  return {
103
- getFinancialContext: () => request({ endpoint: endpointByOperationId.getFinancialContext }),
104
- getFinancialContextMeta: () => request({ endpoint: endpointByOperationId.getFinancialContextMeta }),
138
+ getFinancialContext: () => request({ endpoint: endpointFor('getFinancialContext') }, financialContextSchema),
139
+ getFinancialContextMeta: () => request({ endpoint: endpointFor('getFinancialContextMeta') }, financialContextMetaSchema),
105
140
  getTransactions: (input) => {
106
- if ('month' in input)
141
+ if ('month' in input) {
107
142
  return request({
108
- endpoint: endpointByOperationId.getFinancialContextTransactions,
143
+ endpoint: endpointFor('getFinancialContextTransactions'),
109
144
  query: { month: input.month },
110
- });
145
+ }, transactionMonthSchema);
146
+ }
111
147
  return request({
112
- endpoint: endpointByOperationId.getFinancialContextTransactions,
148
+ endpoint: endpointFor('getFinancialContextTransactions'),
113
149
  query: { latest: '1' },
114
- });
150
+ }, latestTransactionsSchema);
115
151
  },
116
152
  };
117
153
  }
@@ -120,29 +156,29 @@ function createClient(authorizationResolver, options) {
120
156
  return {
121
157
  ...createReadOnlyClient(request),
122
158
  searchOperations: (query) => request({
123
- endpoint: endpointByOperationId.searchOperations,
159
+ endpoint: endpointFor('searchOperations'),
124
160
  method: 'POST',
125
161
  body: query ? { query } : {},
126
- }),
162
+ }, automationOperationSearchResponseSchema),
127
163
  describeOperation: (operation_id, input) => {
128
164
  const body = { operation_id };
129
165
  if (input)
130
166
  Object.assign(body, { input });
131
167
  return request({
132
- endpoint: endpointByOperationId.describeOperation,
168
+ endpoint: endpointFor('describeOperation'),
133
169
  method: 'POST',
134
170
  body,
135
- });
171
+ }, describeOperationResponseParser);
136
172
  },
137
173
  invokeOperation: (operation_id, input, approval_id) => {
138
174
  const body = { operation_id, input: input ?? {} };
139
175
  if (approval_id)
140
176
  Object.assign(body, { approval_id });
141
177
  return request({
142
- endpoint: endpointByOperationId.invokeOperation,
178
+ endpoint: endpointFor('invokeOperation'),
143
179
  method: 'POST',
144
180
  body,
145
- });
181
+ }, invokeOperationResponseParser);
146
182
  },
147
183
  };
148
184
  }
@@ -1 +1 @@
1
- {"version":3,"file":"warm-api-client.js","sourceRoot":"","sources":["../src/warm-api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"warm-api-client.js","sourceRoot":"","sources":["../src/warm-api-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warmio/mcp",
3
- "version": "11.0.5",
3
+ "version": "11.0.7",
4
4
  "description": "Warm local stdio MCP server",
5
5
  "type": "module",
6
6
  "engines": {
@@ -33,16 +33,14 @@
33
33
  "warmio": "dist/cli.js"
34
34
  },
35
35
  "files": [
36
- "dist",
37
- ".cursor-plugin",
38
- "assets",
39
- "mcp.json",
40
- "skills"
36
+ "dist"
41
37
  ],
42
38
  "scripts": {
43
39
  "build": "tsc -p tsconfig.json",
44
40
  "test": "pnpm build && node --test test/*.mjs",
45
- "pack:check": "pnpm pack --dry-run"
41
+ "pack:check": "pnpm pack --dry-run",
42
+ "mcpb:build": "cd mcpb && pnpm install && pnpm build",
43
+ "mcpb:pack": "cd mcpb && pnpm pack"
46
44
  },
47
45
  "keywords": [
48
46
  "mcp",
@@ -59,7 +57,7 @@
59
57
  },
60
58
  "dependencies": {
61
59
  "@modelcontextprotocol/sdk": "^1.27.1",
62
- "@warmio/contracts": "3.0.0",
60
+ "@warmio/contracts": "3.0.2",
63
61
  "dotenv": "^17.2.3",
64
62
  "zod": "^3.25.76"
65
63
  },
@@ -1,152 +0,0 @@
1
- # Warm Cursor Plugin
2
-
3
- Official Cursor Marketplace plugin for [Warm](https://warm.io) — personal finance automation via MCP.
4
-
5
- ## Features
6
-
7
- This plugin provides access to Warm's Model Context Protocol (MCP) server, enabling AI assistants to:
8
-
9
- - **Read financial context** — balances, accounts, budgets, goals, liabilities, holdings
10
- - **Retrieve transactions** — latest 10-day window or specific month
11
- - **Search operations** — discover available automation operations
12
- - **Invoke operations** — execute approved automations with write-operation safeguards
13
-
14
- All write operations require explicit approval via a two-step describe → invoke flow.
15
-
16
- ## Installation
17
-
18
- ### From Cursor Marketplace (Recommended)
19
-
20
- 1. Open Cursor
21
- 2. Go to Settings → Cursor Plugins
22
- 3. Search for "Warm"
23
- 4. Click "Install"
24
- 5. Enter your Warm API key when prompted
25
-
26
- Get your API key: [https://warm.io/settings/api-keys](https://warm.io/settings/api-keys)
27
-
28
- ### Local Testing (Development)
29
-
30
- For local development and testing:
31
-
32
- ```bash
33
- # Symlink the full plugin package root (not just .cursor-plugin/)
34
- mkdir -p ~/.cursor/plugins/local
35
- ln -s /path/to/warm-app/libraries/mcp ~/.cursor/plugins/local/warm
36
-
37
- # Restart Cursor or run Developer: Reload Window
38
- ```
39
-
40
- ## Configuration
41
-
42
- The plugin requires one environment variable:
43
-
44
- - **`WARM_API_KEY`** (required, secret) — Your Warm API key from [https://warm.io/settings/api-keys](https://warm.io/settings/api-keys)
45
-
46
- This is automatically configured when you install from the Cursor Marketplace.
47
-
48
- ## Available MCP Tools
49
-
50
- ### Read Tools
51
-
52
- - `get_financial_context` — Compact overview of your financial status
53
- - `get_transactions` — Transaction history (latest or by month)
54
-
55
- ### Automation Tools
56
-
57
- - `search_operations` — Find available operations
58
- - `describe_operation` — Get operation details and approval for writes
59
- - `invoke_operation` — Execute approved operations
60
-
61
- See [skills/warm/SKILL.md](../skills/warm/SKILL.md) for detailed usage examples and workflow guidance.
62
-
63
- ## Usage Examples
64
-
65
- ### Read Financial Data
66
-
67
- ```
68
- Show me my current net worth and account balances
69
- ```
70
-
71
- ```
72
- What were my transactions in January 2024?
73
- ```
74
-
75
- ### Automation
76
-
77
- ```
78
- Search for operations related to budgets
79
- ```
80
-
81
- ```
82
- Create a monthly budget for groceries with $500 limit
83
- (The assistant will use describe_operation to get approval, then invoke_operation)
84
- ```
85
-
86
- ## Security & Approvals
87
-
88
- - **Read operations** execute immediately without approval
89
- - **Write operations** require a two-step approval flow:
90
- 1. `describe_operation` with exact input → returns `approval_id`
91
- 2. `invoke_operation` with same input + `approval_id` → executes
92
- - Approvals expire and are single-use
93
- - The AI cannot move money or modify data without explicit approval
94
-
95
- ## Documentation
96
-
97
- - Plugin skill guide: [skills/warm/SKILL.md](../skills/warm/SKILL.md)
98
- - Warm Developer Docs: [https://warm.io/developers](https://warm.io/developers)
99
- - MCP package source: [libraries/mcp](../)
100
- - Published npm package: [@warmio/mcp](https://www.npmjs.com/package/@warmio/mcp)
101
-
102
- ## Publishing to Cursor Marketplace
103
-
104
- To publish this plugin to the Cursor Marketplace:
105
-
106
- 1. Ensure `plugin.json`, `mcp.json`, and `skills/warm/SKILL.md` are complete and correct
107
- 2. Test locally via `~/.cursor/plugins/local/warm` symlink to `libraries/mcp`
108
- 3. Submit at: [https://cursor.com/marketplace/publish](https://cursor.com/marketplace/publish)
109
- 4. Provide repository path: `jasonstockman/warm-app` (monorepo root with `.cursor-plugin/marketplace.json`)
110
-
111
- The marketplace will read the plugin manifest and host it for one-click installation.
112
-
113
- ## Development
114
-
115
- This plugin is maintained in the [warm-app](https://github.com/jasonstockman/warm-app) monorepo under `libraries/mcp/.cursor-plugin`.
116
-
117
- The underlying MCP server is published as [@warmio/mcp](https://www.npmjs.com/package/@warmio/mcp) on npm.
118
-
119
- ### Local Package Testing
120
-
121
- To test against a local build of `@warmio/mcp`:
122
-
123
- ```bash
124
- # Build the MCP package
125
- cd libraries/mcp
126
- pnpm build
127
-
128
- # Update mcp.json to use local path temporarily
129
- {
130
- "mcpServers": {
131
- "warm": {
132
- "command": "node",
133
- "args": ["/absolute/path/to/libraries/mcp/dist/cli.js", "mcp"],
134
- "env": {
135
- "WARM_API_KEY": "${WARM_API_KEY}"
136
- }
137
- }
138
- }
139
- }
140
- ```
141
-
142
- Remember to revert to `npx -y @warmio/mcp@latest mcp` before publishing.
143
-
144
- ## License
145
-
146
- MIT License — see [LICENSE](../LICENSE) or repository root for details.
147
-
148
- ## Support
149
-
150
- - Issues: [GitHub Issues](https://github.com/jasonstockman/warm-app/issues)
151
- - Email: hello@warm.io
152
- - Documentation: https://warm.io/developers
@@ -1,39 +0,0 @@
1
- {
2
- "name": "warm",
3
- "displayName": "Warm",
4
- "version": "1.0.0",
5
- "description": "Personal finance automation MCP server. Read financial context, transactions, search operations, and invoke approved automations.",
6
- "author": {
7
- "name": "Warm",
8
- "email": "hello@warm.io"
9
- },
10
- "homepage": "https://warm.io/developers",
11
- "repository": "https://github.com/jasonstockman/warm-app",
12
- "license": "MIT",
13
- "logo": "assets/logo.svg",
14
- "keywords": [
15
- "warm",
16
- "finance",
17
- "automation",
18
- "personal-finance",
19
- "financial-data",
20
- "budgets",
21
- "transactions",
22
- "mcp"
23
- ],
24
- "category": "integrations",
25
- "tags": ["finance", "automation", "personal-finance", "mcp"],
26
- "variables": {
27
- "type": "object",
28
- "properties": {
29
- "WARM_API_KEY": {
30
- "type": "string",
31
- "title": "Warm API key",
32
- "description": "Full-access API key from https://warm.io/settings/api-keys"
33
- }
34
- },
35
- "required": ["WARM_API_KEY"]
36
- },
37
- "mcpServers": "./mcp.json",
38
- "skills": "./skills/"
39
- }
package/assets/logo.svg DELETED
@@ -1,14 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="600" height="469" viewBox="0 0 600 469" version="1.1">
2
- <style>
3
- :root {
4
- color-scheme: light dark;
5
- color: CanvasText;
6
- }
7
- </style>
8
- <!-- Left segment -->
9
- <path d="M 33.500 40.660 C 20.206 42.744, 0 48.560, -0 50.302 C -0 51.759, 123.955 348.889, 127.738 356.500 C 142.182 385.561, 169.450 410.275, 198.946 421.040 C 218.922 428.330, 243.683 430.825, 264.526 427.648 C 277.151 425.724, 294.628 420.011, 294.194 417.952 C 293.790 416.040, 172.732 124.599, 168.522 115.405 C 161.779 100.679, 149.168 84.171, 135.093 71.646 C 119.358 57.644, 98.880 47.362, 77 42.478 C 69.645 40.836, 40.220 39.606, 33.500 40.660" fill="currentColor" stroke="currentColor" stroke-width="8"/>
10
- <!-- Center segment -->
11
- <path d="M 229.651 41.597 C 217.916 43.718, 202.443 49.144, 202.744 51.035 C 203.418 55.268, 329.689 356.584, 333.687 363.500 C 340.525 375.327, 345.293 381.483, 355.408 391.538 C 374.603 410.619, 398.878 423.014, 425.907 427.533 C 439.649 429.831, 463.594 429.132, 476 426.072 C 489.892 422.645, 497.188 419.815, 496.703 418.043 C 495.416 413.331, 371.058 116.094, 367.406 109 C 349.467 74.149, 313.008 47.875, 273.752 41.509 C 262.281 39.648, 240.195 39.693, 229.651 41.597" fill="currentColor" stroke="currentColor" stroke-width="8"/>
12
- <!-- Right segment -->
13
- <path d="M 463 40.593 C 451.670 42.545, 447.288 43.569, 439 46.203 C 433.775 47.864, 429.338 49.372, 429.140 49.555 C 428.942 49.737, 434.670 64.021, 441.868 81.297 C 455.574 114.190, 462.215 131.660, 468.447 151.208 C 475.360 172.892, 486.124 186.213, 503.834 194.997 C 530.956 208.450, 564.982 201.679, 583.654 179.112 C 604.399 154.041, 605.407 121.944, 586.291 95.155 C 567.827 69.280, 539.107 50.114, 508 42.907 C 500.680 41.212, 494.713 40.644, 482 40.434 C 472.925 40.284, 464.375 40.356, 463 40.593" fill="currentColor" stroke="currentColor" stroke-width="8"/>
14
- </svg>
package/mcp.json DELETED
@@ -1,11 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "warm": {
4
- "command": "npx",
5
- "args": ["-y", "@warmio/mcp@latest", "mcp"],
6
- "env": {
7
- "WARM_API_KEY": "${WARM_API_KEY}"
8
- }
9
- }
10
- }
11
- }
@@ -1,152 +0,0 @@
1
- ---
2
- name: warm
3
- description: Use Warm MCP tools to read financial context, retrieve transactions, search operations, and invoke approved automations.
4
- ---
5
-
6
- # Warm MCP Skill
7
-
8
- Use Warm MCP tools to read financial context, retrieve transactions, search operations, and invoke approved automations.
9
-
10
- ## Available Tools
11
-
12
- ### Read Tools
13
-
14
- **`get_financial_context`** — Read-only compact FinancialContext JSON. Includes:
15
-
16
- - `status.position` — current balances and net worth
17
- - `status.accounts` — connected accounts
18
- - Transaction index (total/months)
19
- - Recurring transactions
20
- - Budgets, goals, snapshots
21
- - Liabilities, holdings, health metrics
22
-
23
- Transaction items are not inline; use `get_transactions` to retrieve items.
24
-
25
- **`get_transactions`** — Read-only transactions from the FinancialContext artifact.
26
-
27
- - Pass `period: "latest"` for the fixed 10-day latest window
28
- - Pass `period: "YYYY-MM"` for a specific month (e.g. `"2024-01"`)
29
- - Months outside the covered range return an error
30
- - The latest window is not caller-configurable
31
-
32
- ### Automation Tools
33
-
34
- **`search_operations`** — Search the supported Warm operation catalog.
35
-
36
- - Use this first to find the smallest matching operation
37
- - Optional `query` parameter: words describing the action or data you need (max 200 chars)
38
- - Returns matching operations with IDs and descriptions
39
-
40
- **`describe_operation`** — Describe one operation, including its input schema and risk.
41
-
42
- - Required: `operation_id` (string)
43
- - Optional: `input` (exact intended input)
44
- - For write operations, pass the exact intended input to receive an approval with:
45
- - `approval_id` (UUID)
46
- - Status, URL, and expiry timestamp
47
- - Use the approval_id to invoke the operation
48
-
49
- **`invoke_operation`** — Invoke one previously discovered Warm operation.
50
-
51
- - Required: `operation_id` (string)
52
- - Optional: `input` (operation parameters)
53
- - Optional: `approval_id` (UUID, required for write operations)
54
- - Every write operation requires the `approval_id` returned for the exact same input by `describe_operation`
55
- - Returns operation result with status, body, headers, and operation_id
56
-
57
- ## Workflow
58
-
59
- ### Reading Financial Data
60
-
61
- 1. Call `get_financial_context` to get the overview
62
- 2. Call `get_transactions` with `period: "latest"` or `period: "YYYY-MM"` to retrieve transactions
63
-
64
- ### Invoking Automations
65
-
66
- 1. Call `search_operations` with optional query to find relevant operations
67
- 2. Call `describe_operation` with the `operation_id` and exact `input` to get approval (for writes)
68
- 3. **Wait for owner approval**: For write operations, surface the `approval.url` to the user and wait for them to visit it and approve in Warm Settings
69
- 4. Call `invoke_operation` with the `operation_id`, `input`, and `approval_id` (only after approval status changes from `pending`)
70
-
71
- ## Important Rules
72
-
73
- - **Never move money without explicit approval**: Write operations require an `approval_id` from `describe_operation` AND owner approval at the returned `approval.url`
74
- - **Wait for owner approval**: After calling `describe_operation` for a write, surface the `approval.url` and wait for owner confirmation before calling `invoke_operation`
75
- - **Use exact input for approval**: The `input` passed to `describe_operation` must match exactly the `input` passed to `invoke_operation`
76
- - **Check operation risk**: Review the risk level in `describe_operation` response before proceeding
77
- - **Respect expiry**: Approval IDs have an expiry timestamp; check before invoking
78
- - **Handle errors**: Operations return status codes; check for success (2xx) vs error (4xx/5xx). A 409 status typically means the approval is still `pending` and not yet approved by the owner
79
-
80
- ## Examples
81
-
82
- ### Get Financial Overview
83
-
84
- ```typescript
85
- // Step 1: Get context
86
- const context = await get_financial_context({});
87
- console.log(`Net worth: $${context.status.position.net_worth}`);
88
-
89
- // Step 2: Get recent transactions
90
- const transactions = await get_transactions({ period: 'latest' });
91
- console.log(`Recent transactions: ${transactions.items.length}`);
92
- ```
93
-
94
- ### Search and Invoke Operation
95
-
96
- ```typescript
97
- // Step 1: Search for operations
98
- const results = await search_operations({
99
- query: 'create budget',
100
- });
101
-
102
- // Step 2: Describe the operation with exact input
103
- const description = await describe_operation({
104
- operation_id: 'budgets.create',
105
- input: {
106
- body: {
107
- name: 'Groceries',
108
- budget_type: 'category',
109
- amount: 500,
110
- period: 'monthly',
111
- rollover_enabled: false,
112
- },
113
- },
114
- });
115
-
116
- // Step 3: Owner must approve at the returned URL
117
- console.log(`Approval required: ${description.approval.url}`);
118
- console.log(`Status: ${description.approval.status}`); // "pending"
119
- // Owner visits URL, reviews, and approves
120
-
121
- // Step 4: After owner approval, invoke with approval_id
122
- const result = await invoke_operation({
123
- operation_id: 'budgets.create',
124
- input: {
125
- body: {
126
- name: 'Groceries',
127
- budget_type: 'category',
128
- amount: 500,
129
- period: 'monthly',
130
- rollover_enabled: false,
131
- },
132
- },
133
- approval_id: description.approval.id,
134
- });
135
- ```
136
-
137
- ## Error Handling
138
-
139
- - API errors return structured JSON with `error` and `status` fields
140
- - Transaction queries for invalid months return descriptive errors
141
- - Write operations without valid approval_id fail with 403/401 errors
142
- - Always check operation status codes before treating results as successful
143
-
144
- ## Authentication
145
-
146
- The Warm MCP server uses the `WARM_API_KEY` environment variable for authentication. This is automatically configured by the Cursor plugin when you provide your API key.
147
-
148
- Get your API key from: https://warm.io/settings/api-keys
149
-
150
- ## Documentation
151
-
152
- Full API documentation: https://warm.io/developers