@warmio/contracts 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +3 -3
  2. package/dist/api/endpoints.d.ts +34 -48
  3. package/dist/api/endpoints.d.ts.map +1 -1
  4. package/dist/api/endpoints.js +36 -56
  5. package/dist/api/endpoints.js.map +1 -1
  6. package/dist/generated/base-openapi.d.ts +1 -1
  7. package/dist/generated/base-openapi.d.ts.map +1 -1
  8. package/dist/generated/base-openapi.js +1 -1
  9. package/dist/generated/base-openapi.js.map +1 -1
  10. package/dist/generated/mcp-package-release-metadata.d.ts +7 -0
  11. package/dist/generated/mcp-package-release-metadata.d.ts.map +1 -0
  12. package/dist/generated/mcp-package-release-metadata.js +7 -0
  13. package/dist/generated/mcp-package-release-metadata.js.map +1 -0
  14. package/dist/generated/private-mcp-tool-descriptors.d.ts +0 -38
  15. package/dist/generated/private-mcp-tool-descriptors.d.ts.map +1 -1
  16. package/dist/generated/private-mcp-tool-descriptors.js +0 -46
  17. package/dist/generated/private-mcp-tool-descriptors.js.map +1 -1
  18. package/dist/generated/warm-app-api-manifest.d.ts +1230 -0
  19. package/dist/generated/warm-app-api-manifest.d.ts.map +1 -0
  20. package/dist/generated/warm-app-api-manifest.js +1841 -0
  21. package/dist/generated/warm-app-api-manifest.js.map +1 -0
  22. package/dist/index.d.ts +0 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +0 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/manifest.d.ts +434 -1185
  27. package/dist/manifest.d.ts.map +1 -1
  28. package/dist/manifest.js +21 -34
  29. package/dist/manifest.js.map +1 -1
  30. package/dist/mcp/distribution.d.ts +221 -71
  31. package/dist/mcp/distribution.d.ts.map +1 -1
  32. package/dist/mcp/distribution.js +41 -47
  33. package/dist/mcp/distribution.js.map +1 -1
  34. package/dist/mcp/tools.d.ts +1 -4
  35. package/dist/mcp/tools.d.ts.map +1 -1
  36. package/dist/mcp/tools.js +0 -20
  37. package/dist/mcp/tools.js.map +1 -1
  38. package/dist/openapi/base.yaml +33 -59
  39. package/dist/openapi/build-openapi.d.ts +1 -0
  40. package/dist/openapi/build-openapi.d.ts.map +1 -1
  41. package/dist/openapi/build-openapi.js +75 -16
  42. package/dist/openapi/build-openapi.js.map +1 -1
  43. package/dist/schemas/index.d.ts +1 -0
  44. package/dist/schemas/index.d.ts.map +1 -1
  45. package/dist/schemas/index.js +1 -0
  46. package/dist/schemas/index.js.map +1 -1
  47. package/dist/schemas/public-api.d.ts +1350 -0
  48. package/dist/schemas/public-api.d.ts.map +1 -0
  49. package/dist/schemas/public-api.js +175 -0
  50. package/dist/schemas/public-api.js.map +1 -0
  51. package/package.json +1 -8
  52. package/dist/public-discovery.d.ts +0 -116
  53. package/dist/public-discovery.d.ts.map +0 -1
  54. package/dist/public-discovery.js +0 -91
  55. package/dist/public-discovery.js.map +0 -1
@@ -2,17 +2,13 @@
2
2
  * Separate package module: installer and client configuration facts are shared
3
3
  * by the app and docs but are not part of the API endpoint registry.
4
4
  */
5
- export const WARM_MCP_PACKAGE_NAME = '@warmio/mcp';
6
- export const WARM_MCP_PACKAGE_SPEC = `${WARM_MCP_PACKAGE_NAME}@latest`;
7
- export const WARM_MCP_INSTALL_COMMAND = `npx -y ${WARM_MCP_PACKAGE_SPEC}`;
8
- export const WARM_MCP_MINIMUM_NODE_VERSION = '>=18';
9
- import { apiAudienceRegistry } from '../api/endpoints.js';
10
- export const WARM_MCP_MODES = Object.values(apiAudienceRegistry).map(({ mcp_mode }) => mcp_mode);
5
+ import { warmMcpPackageReleaseMetadata } from '../generated/mcp-package-release-metadata.js';
11
6
  export const WARM_MCP_CLIENTS = [
12
7
  {
13
8
  id: 'claude-code',
14
9
  name: 'Claude Code',
15
10
  format: 'json',
11
+ configDialect: 'mcpServers',
16
12
  alwaysInclude: true,
17
13
  configPaths: {
18
14
  darwin: { root: 'home', segments: ['.claude.json'] },
@@ -24,6 +20,7 @@ export const WARM_MCP_CLIENTS = [
24
20
  id: 'claude-desktop',
25
21
  name: 'Claude Desktop',
26
22
  format: 'json',
23
+ configDialect: 'mcpServers',
27
24
  configPaths: {
28
25
  darwin: {
29
26
  root: 'home',
@@ -43,6 +40,7 @@ export const WARM_MCP_CLIENTS = [
43
40
  id: 'cursor',
44
41
  name: 'Cursor',
45
42
  format: 'json',
43
+ configDialect: 'mcpServers',
46
44
  configPaths: {
47
45
  darwin: { root: 'home', segments: ['.cursor', 'mcp.json'] },
48
46
  linux: { root: 'home', segments: ['.cursor', 'mcp.json'] },
@@ -53,6 +51,7 @@ export const WARM_MCP_CLIENTS = [
53
51
  id: 'windsurf',
54
52
  name: 'Windsurf',
55
53
  format: 'json',
54
+ configDialect: 'mcpServers',
56
55
  configPaths: {
57
56
  darwin: { root: 'home', segments: ['.codeium', 'windsurf', 'mcp_config.json'] },
58
57
  linux: { root: 'home', segments: ['.codeium', 'windsurf', 'mcp_config.json'] },
@@ -63,6 +62,7 @@ export const WARM_MCP_CLIENTS = [
63
62
  id: 'opencode',
64
63
  name: 'OpenCode',
65
64
  format: 'json',
65
+ configDialect: 'openCode',
66
66
  configPaths: {
67
67
  darwin: { root: 'home', segments: ['.config', 'opencode', 'opencode.json'] },
68
68
  linux: { root: 'home', segments: ['.config', 'opencode', 'opencode.json'] },
@@ -73,6 +73,7 @@ export const WARM_MCP_CLIENTS = [
73
73
  id: 'codex-cli',
74
74
  name: 'Codex CLI',
75
75
  format: 'toml',
76
+ configDialect: 'mcpServers',
76
77
  configPaths: {
77
78
  darwin: { root: 'home', segments: ['.codex', 'config.toml'] },
78
79
  linux: { root: 'home', segments: ['.codex', 'config.toml'] },
@@ -83,6 +84,7 @@ export const WARM_MCP_CLIENTS = [
83
84
  id: 'antigravity',
84
85
  name: 'Antigravity',
85
86
  format: 'json',
87
+ configDialect: 'mcpServers',
86
88
  configPaths: {
87
89
  darwin: { root: 'home', segments: ['.gemini', 'antigravity', 'mcp_config.json'] },
88
90
  linux: { root: 'home', segments: ['.gemini', 'antigravity', 'mcp_config.json'] },
@@ -93,6 +95,7 @@ export const WARM_MCP_CLIENTS = [
93
95
  id: 'gemini-cli',
94
96
  name: 'Gemini CLI',
95
97
  format: 'json',
98
+ configDialect: 'mcpServers',
96
99
  configPaths: {
97
100
  darwin: { root: 'home', segments: ['.gemini', 'settings.json'] },
98
101
  linux: { root: 'home', segments: ['.gemini', 'settings.json'] },
@@ -106,48 +109,39 @@ export const WARM_MCP_PROJECT_CONFIGS = [
106
109
  '.vscode/mcp.json',
107
110
  ];
108
111
  export const WARM_MCP_CREDENTIALS = {
109
- automation: {
110
- apiKeyEnv: 'WARM_AUTOMATION_API_KEY',
111
- apiKeyFileEnv: 'WARM_AUTOMATION_API_KEY_FILE',
112
- defaultFileName: 'automation_api_key',
113
- },
114
- context: {
115
- apiKeyEnv: 'WARM_CONTEXT_API_KEY',
116
- apiKeyFileEnv: 'WARM_CONTEXT_API_KEY_FILE',
117
- defaultFileName: 'context_api_key',
118
- },
112
+ apiKeyEnv: 'WARM_API_KEY',
113
+ apiKeyFileEnv: 'WARM_API_KEY_FILE',
114
+ defaultFileName: 'api_key',
119
115
  };
120
- export const WARM_MCP_SERVER_CONFIGS = {
121
- automation: {
122
- serverName: 'warm-automation',
116
+ export function createWarmMcpManifest(metadata) {
117
+ const packageSpec = `${metadata.name}@latest`;
118
+ const installCommand = `npx -y ${packageSpec}`;
119
+ const serverConfig = {
120
+ args: ['-y', packageSpec, 'mcp'],
123
121
  command: 'npx',
124
- args: ['-y', WARM_MCP_PACKAGE_SPEC, 'mcp', '--mode', 'automation'],
125
- },
126
- context: {
127
122
  serverName: 'warm',
128
- command: 'npx',
129
- args: ['-y', WARM_MCP_PACKAGE_SPEC, 'mcp', '--mode', 'context'],
130
- },
131
- };
132
- export const WARM_MCP_INSTALLER_COMMANDS = {
133
- automation: `${WARM_MCP_INSTALL_COMMAND} install --mode automation`,
134
- context: `${WARM_MCP_INSTALL_COMMAND} install --mode context`,
135
- };
136
- export const WARM_MCP_SERVER_COMMANDS = {
137
- automation: `${WARM_MCP_INSTALL_COMMAND} mcp --mode automation`,
138
- context: `${WARM_MCP_INSTALL_COMMAND} mcp --mode context`,
139
- };
140
- export const WARM_MCP_MANIFEST = {
141
- clients: WARM_MCP_CLIENTS,
142
- credentials: WARM_MCP_CREDENTIALS,
143
- installCommand: WARM_MCP_INSTALL_COMMAND,
144
- installerCommands: WARM_MCP_INSTALLER_COMMANDS,
145
- minimumNodeVersion: WARM_MCP_MINIMUM_NODE_VERSION,
146
- modes: WARM_MCP_MODES,
147
- packageName: WARM_MCP_PACKAGE_NAME,
148
- packageSpec: WARM_MCP_PACKAGE_SPEC,
149
- projectConfigs: WARM_MCP_PROJECT_CONFIGS,
150
- serverCommands: WARM_MCP_SERVER_COMMANDS,
151
- serverConfigs: WARM_MCP_SERVER_CONFIGS,
152
- };
123
+ };
124
+ return {
125
+ clients: WARM_MCP_CLIENTS,
126
+ credentials: WARM_MCP_CREDENTIALS,
127
+ installCommand,
128
+ installerCommand: `${installCommand} install`,
129
+ minimumNodeVersion: metadata.nodeEngine,
130
+ packageName: metadata.name,
131
+ packageSpec,
132
+ packageVersion: metadata.version,
133
+ projectConfigs: WARM_MCP_PROJECT_CONFIGS,
134
+ serverCommand: `${installCommand} mcp`,
135
+ serverConfig,
136
+ };
137
+ }
138
+ export const WARM_MCP_MANIFEST = createWarmMcpManifest(warmMcpPackageReleaseMetadata);
139
+ export const WARM_MCP_PACKAGE_NAME = WARM_MCP_MANIFEST.packageName;
140
+ export const WARM_MCP_PACKAGE_VERSION = WARM_MCP_MANIFEST.packageVersion;
141
+ export const WARM_MCP_PACKAGE_SPEC = WARM_MCP_MANIFEST.packageSpec;
142
+ export const WARM_MCP_INSTALL_COMMAND = WARM_MCP_MANIFEST.installCommand;
143
+ export const WARM_MCP_MINIMUM_NODE_VERSION = WARM_MCP_MANIFEST.minimumNodeVersion;
144
+ export const WARM_MCP_SERVER_CONFIG = WARM_MCP_MANIFEST.serverConfig;
145
+ export const WARM_MCP_INSTALLER_COMMAND = WARM_MCP_MANIFEST.installerCommand;
146
+ export const WARM_MCP_SERVER_COMMAND = WARM_MCP_MANIFEST.serverCommand;
153
147
  //# sourceMappingURL=distribution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/mcp/distribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/mcp/distribution.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { z, type ZodRawShape } from 'zod';
2
- import type { PrivateMcpMode } from './distribution.js';
3
2
  export declare const emptyMcpInputShape: {};
4
3
  export declare const getTransactionsMcpInputShape: {
5
4
  period: z.ZodString;
@@ -56,11 +55,10 @@ type McpToolDefinition = {
56
55
  };
57
56
  description: string;
58
57
  inputShape: ZodRawShape;
59
- mode: PrivateMcpMode;
60
58
  name: string;
61
59
  outputSchema: z.ZodTypeAny;
62
60
  };
63
- export declare const privateMcpToolDefinitions: readonly [McpToolDefinition, McpToolDefinition, McpToolDefinition, McpToolDefinition, McpToolDefinition, McpToolDefinition];
61
+ export declare const privateMcpToolDefinitions: readonly [McpToolDefinition, McpToolDefinition, McpToolDefinition, McpToolDefinition, McpToolDefinition];
64
62
  export declare const privateMcpToolDescriptors: {
65
63
  annotations: {
66
64
  destructiveHint: boolean;
@@ -68,7 +66,6 @@ export declare const privateMcpToolDescriptors: {
68
66
  readOnlyHint: boolean;
69
67
  };
70
68
  description: string;
71
- mode: PrivateMcpMode;
72
69
  name: string;
73
70
  input_schema: {
74
71
  $schema?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAU1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,eAAO,MAAM,kBAAkB,IAA2B,CAAC;AAC3D,eAAO,MAAM,4BAA4B;;CAOlB,CAAC;AACxB,eAAO,MAAM,6BAA6B;;CAEnB,CAAC;AACxB,eAAO,MAAM,8BAA8B;;;;;;;;;;;;CAKpB,CAAC;AACxB,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;CAOlB,CAAC;AAExB,eAAO,MAAM,6BAA6B;;;;;;EAAkD,CAAC;AAE7F,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC;;;;;;EAKrD;AAkBD,KAAK,iBAAiB,GAAG;IACvB,WAAW,EAAE;QAAE,eAAe,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IACzF,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,WAAW,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC;CAC5B,CAAC;AAWF,eAAO,MAAM,yBAAyB,6HAsDW,CAAC;AAElD,eAAO,MAAM,yBAAyB;iBAzEvB;QAAE,eAAe,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;iBAC3E,MAAM;UAEb,cAAc;UACd,MAAM;;;;;;;GAiFb,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAW1C,eAAO,MAAM,kBAAkB,IAA2B,CAAC;AAC3D,eAAO,MAAM,4BAA4B;;CAOlB,CAAC;AACxB,eAAO,MAAM,6BAA6B;;CAEnB,CAAC;AACxB,eAAO,MAAM,8BAA8B;;;;;;;;;;;;CAKpB,CAAC;AACxB,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;CAOlB,CAAC;AAExB,eAAO,MAAM,6BAA6B;;;;;;EAAkD,CAAC;AAE7F,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC;;;;;;EAKrD;AAWD,KAAK,iBAAiB,GAAG;IACvB,WAAW,EAAE;QAAE,eAAe,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IACzF,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,WAAW,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC;CAC5B,CAAC;AAWF,eAAO,MAAM,yBAAyB,0GAyCW,CAAC;AAElD,eAAO,MAAM,yBAAyB;iBA3DvB;QAAE,eAAe,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;iBAC3E,MAAM;UAEb,MAAM;;;;;;;GAoEb,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC"}
package/dist/mcp/tools.js CHANGED
@@ -31,13 +31,6 @@ export function normalizeGetTransactionsMcpInput(input) {
31
31
  ? { latest: true }
32
32
  : { month: input.period };
33
33
  }
34
- const verifyKeyOutputSchema = z
35
- .object({
36
- audience: z.enum(['automation', 'context', 'oauth']).optional(),
37
- status: z.string(),
38
- valid: z.boolean(),
39
- })
40
- .strict();
41
34
  const operationInvokeOutputSchema = z
42
35
  .object({
43
36
  body: z.unknown(),
@@ -55,7 +48,6 @@ const normalizeJsonSchema = (schema) => ({
55
48
  });
56
49
  export const privateMcpToolDefinitions = [
57
50
  tool({
58
- mode: 'context',
59
51
  name: 'get_financial_context',
60
52
  description: 'Read-only compact FinancialContext JSON. Includes status.position, status.accounts, transaction index total/months, recurring, budgets, goals, snapshots, liabilities, holdings, and health. Transaction items are not inline; use get_transactions for items.',
61
53
  annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
@@ -63,7 +55,6 @@ export const privateMcpToolDefinitions = [
63
55
  outputSchema: financialContextSchema,
64
56
  }),
65
57
  tool({
66
- mode: 'context',
67
58
  name: 'get_transactions',
68
59
  description: 'Read-only transactions from the FinancialContext artifact. Pass `period: "latest"` for the fixed 10-day latest window or `period: "YYYY-MM"` for a month page. The latest window is not caller-configurable. Months outside the covered range return an error.',
69
60
  annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
@@ -71,15 +62,6 @@ export const privateMcpToolDefinitions = [
71
62
  outputSchema: z.union([transactionMonthSchema, latestTransactionsSchema]),
72
63
  }),
73
64
  tool({
74
- mode: 'context',
75
- name: 'verify_key',
76
- description: 'Read-only API key validation for the configured Warm account.',
77
- annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
78
- inputShape: emptyMcpInputShape,
79
- outputSchema: verifyKeyOutputSchema,
80
- }),
81
- tool({
82
- mode: 'automation',
83
65
  name: 'search_operations',
84
66
  description: 'Search the supported Warm operation catalog. Use this first to find the smallest matching operation.',
85
67
  annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
@@ -87,7 +69,6 @@ export const privateMcpToolDefinitions = [
87
69
  outputSchema: automationOperationSearchResponseSchema,
88
70
  }),
89
71
  tool({
90
- mode: 'automation',
91
72
  name: 'describe_operation',
92
73
  description: 'Describe one operation, including its input schema and risk. For write operations, pass the exact intended input to receive an approval with its ID, status, URL, and expiry.',
93
74
  annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: false },
@@ -95,7 +76,6 @@ export const privateMcpToolDefinitions = [
95
76
  outputSchema: automationOperationDescriptionResponseSchema,
96
77
  }),
97
78
  tool({
98
- mode: 'automation',
99
79
  name: 'invoke_operation',
100
80
  description: 'Invoke one previously discovered Warm operation. Every write operation requires the approval_id returned for the exact same input by describe_operation.',
101
81
  annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: false },
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -5,20 +5,17 @@ info:
5
5
  Read your financial context or invoke supported Warm actions through a compact operation catalog.
6
6
 
7
7
  ## Authentication
8
- All requests use `Authorization: Bearer`. API keys are created for either read-only context
9
- access or automation access in Settings on paid Warm plans.
10
-
11
- Read/export routes accept `Authorization: Bearer YOUR_API_KEY_OR_ACCESS_TOKEN`.
12
- Automation routes require an automation key (`warm_auto_...`) and do not accept access tokens.
8
+ All requests use `Authorization: Bearer`. Each account has one non-expiring full-access
9
+ API key (`warm_...`) for raw API and local MCP use. Read/export routes also accept a
10
+ signed-in access token; access tokens never authorize automation operations.
13
11
 
14
12
  Unauthenticated responses include `WWW-Authenticate` guidance and protected resource metadata.
15
13
 
16
14
  ## Rate Limits
17
- - Context keys: 200 requests per hour per key
18
- - Automation keys: 500 requests per hour per key
15
+ - API keys: 500 requests per hour per key
19
16
  - Rate limit headers included in authenticated responses
20
17
  - `/api/export` supports dataset-scoped delta sync with `since` and publishes edge-cache metadata headers
21
- version: '2.0.0'
18
+ version: '3.0.0'
22
19
  contact:
23
20
  name: Warm Support
24
21
  url: https://warm.io/support
@@ -39,9 +36,7 @@ paths:
39
36
  operationId: verifyApiAccess
40
37
  summary: Verify API credentials
41
38
  description: |
42
- Validate a Warm API key or signed-in user access token against the public verification route.
43
-
44
- This endpoint is the canonical readiness check for public API clients and discovery tools.
39
+ Validate a Warm API key or signed-in user access token for installer and Settings flows.
45
40
  tags:
46
41
  - Verification
47
42
  responses:
@@ -50,23 +45,7 @@ paths:
50
45
  content:
51
46
  application/json:
52
47
  schema:
53
- type: object
54
- required:
55
- - status
56
- - valid
57
- - auth
58
- properties:
59
- status:
60
- type: string
61
- enum: [ok]
62
- valid:
63
- type: boolean
64
- auth:
65
- type: string
66
- description: Auth method used to satisfy verification
67
- audience:
68
- type: string
69
- enum: [context, automation, oauth]
48
+ $ref: '#/components/schemas/VerifyApiResponse'
70
49
  '401':
71
50
  $ref: '#/components/responses/Unauthorized'
72
51
  '403':
@@ -82,7 +61,7 @@ paths:
82
61
  Fetch a canonical financial dataset export from the unified `/api/export` surface.
83
62
 
84
63
  Use `dataset=transactions` for paginated transaction history. Other datasets return
85
- a typed JSON object keyed by the dataset name or retained public alias.
64
+ a typed JSON object keyed by the documented dataset name.
86
65
 
87
66
  Preferred dataset names are `accounts`, `transactions`, `snapshots`, `recurring`,
88
67
  `budgets`, `goals`, `health`, `liabilities`, and `holdings`.
@@ -91,7 +70,7 @@ paths:
91
70
  parameters:
92
71
  - name: dataset
93
72
  in: query
94
- description: Dataset identifier or retained public alias
73
+ description: Dataset identifier
95
74
  required: true
96
75
  schema:
97
76
  type: string
@@ -112,13 +91,6 @@ paths:
112
91
  schema:
113
92
  type: string
114
93
  format: date-time
115
- - name: last_knowledge
116
- in: query
117
- description: Legacy alias for `since`
118
- required: false
119
- schema:
120
- type: string
121
- format: date-time
122
94
  - name: limit
123
95
  in: query
124
96
  description: Maximum transactions per page when `dataset=transactions`
@@ -153,19 +125,16 @@ paths:
153
125
  content:
154
126
  application/json:
155
127
  schema:
156
- type: object
157
- description: Dataset-shaped JSON response keyed by the requested dataset
158
- properties:
159
- generated_at:
160
- type: string
161
- format: date-time
162
- next_knowledge:
163
- type: string
164
- format: date-time
165
- nullable: true
166
- pagination:
167
- $ref: '#/components/schemas/Pagination'
168
- additionalProperties: true
128
+ oneOf:
129
+ - $ref: '#/components/schemas/ExportAccountsResponse'
130
+ - $ref: '#/components/schemas/ExportTransactionsResponse'
131
+ - $ref: '#/components/schemas/ExportSnapshotsResponse'
132
+ - $ref: '#/components/schemas/ExportRecurringResponse'
133
+ - $ref: '#/components/schemas/ExportBudgetsResponse'
134
+ - $ref: '#/components/schemas/ExportGoalsResponse'
135
+ - $ref: '#/components/schemas/ExportHealthResponse'
136
+ - $ref: '#/components/schemas/ExportLiabilitiesResponse'
137
+ - $ref: '#/components/schemas/ExportHoldingsResponse'
169
138
  '400':
170
139
  description: Invalid query parameters
171
140
  '401':
@@ -221,7 +190,7 @@ paths:
221
190
  The raw API requires exactly one selector: `month=YYYY-MM` or `latest=1`.
222
191
  Bare calls are invalid on the raw API. The current `@warmio/mcp` `get_transactions` tool
223
192
  accepts one required `period` string: `latest` for the fixed latest window or `YYYY-MM`
224
- for a month. It does not accept cursor, search, or `last_knowledge`.
193
+ for a month. It does not accept export pagination or filtering controls.
225
194
  Transaction amounts use the Warm/Plaid sign convention:
226
195
  positive = expense/debit, negative = income/credit.
227
196
 
@@ -317,7 +286,7 @@ paths:
317
286
  summary: Search supported automation operations
318
287
  tags: [Automation]
319
288
  security:
320
- - AutomationKeyAuth: []
289
+ - BearerAuth: []
321
290
  requestBody:
322
291
  required: false
323
292
  content:
@@ -360,7 +329,7 @@ paths:
360
329
  summary: Describe one operation and request owner approval when required
361
330
  tags: [Automation]
362
331
  security:
363
- - AutomationKeyAuth: []
332
+ - BearerAuth: []
364
333
  requestBody:
365
334
  required: true
366
335
  content:
@@ -412,7 +381,7 @@ paths:
412
381
  summary: Invoke one supported operation
413
382
  tags: [Automation]
414
383
  security:
415
- - AutomationKeyAuth: []
384
+ - BearerAuth: []
416
385
  requestBody:
417
386
  required: true
418
387
  content:
@@ -451,10 +420,6 @@ components:
451
420
  type: http
452
421
  scheme: bearer
453
422
  description: 'Read/export format: `Authorization: Bearer YOUR_API_KEY_OR_ACCESS_TOKEN`'
454
- AutomationKeyAuth:
455
- type: http
456
- scheme: bearer
457
- description: 'Automation format: `Authorization: Bearer warm_auto_...`'
458
423
 
459
424
  headers:
460
425
  ETag:
@@ -604,7 +569,7 @@ components:
604
569
  next_knowledge:
605
570
  type: string
606
571
  format: date-time
607
- description: Use as `last_knowledge` in next request for delta sync
572
+ description: Use as `since` in the next request for delta sync
608
573
  example: '2026-01-10T15:30:00Z'
609
574
  accounts:
610
575
  type: array
@@ -1063,11 +1028,20 @@ components:
1063
1028
 
1064
1029
  Error:
1065
1030
  type: object
1031
+ additionalProperties: false
1066
1032
  required:
1067
1033
  - error
1068
1034
  properties:
1069
1035
  error:
1070
1036
  type: string
1037
+ VerifyApiResponse:
1038
+ type: object
1039
+ additionalProperties: false
1040
+ required: [valid]
1041
+ properties:
1042
+ valid:
1043
+ type: boolean
1044
+ enum: [true]
1071
1045
  description: Human-readable error message
1072
1046
  example: Invalid API key.
1073
1047
 
@@ -1,4 +1,5 @@
1
1
  type OpenApiOperation = {
2
+ description?: string;
2
3
  operationId?: string;
3
4
  security?: Array<Record<string, never[]>>;
4
5
  summary?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"build-openapi.d.ts","sourceRoot":"","sources":["../../src/openapi/build-openapi.ts"],"names":[],"mappings":"AA4BA,KAAK,gBAAgB,GAAG;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AACF,KAAK,eAAe,GAAG;IACrB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C,CAAC;IACF,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD,CAAC;AAgBF;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,CAyEtD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
1
+ {"version":3,"file":"build-openapi.d.ts","sourceRoot":"","sources":["../../src/openapi/build-openapi.ts"],"names":[],"mappings":"AA+CA,KAAK,gBAAgB,GAAG;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AACF,KAAK,eAAe,GAAG;IACrB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C,CAAC;IACF,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD,CAAC;AAgBF;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,CAqItD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
@@ -1,8 +1,8 @@
1
1
  import { zodToJsonSchema } from 'zod-to-json-schema';
2
2
  import { parse, stringify } from 'yaml';
3
- import { apiAuthSchemes, apiEndpointManifest, apiRateLimits, API_ORIGIN } from '../api/index.js';
3
+ import { apiAuthorizationCapabilities, apiEndpointManifest, apiKeyAuthScheme, API_ORIGIN, WARM_API_KEY_RATE_LIMIT_PER_HOUR, } from '../api/index.js';
4
4
  import { baseOpenApiYaml } from '../generated/base-openapi.js';
5
- import { automationInputSchema, automationInvocationResponseSchema, automationOperationSchema, describeOperationRequestSchema, financialContextMetaSchema, financialContextAccountSchema, financialContextBudgetSchema, financialContextGoalSchema, financialContextHealthSchema, financialContextHoldingSchema, financialContextLiabilitySchema, financialContextPositionSchema, financialContextRecurringSchema, financialContextSchema, financialContextSnapshotSchema, financialContextStatusSchema, financialContextTransactionIndexSchema, financialContextTransactionSchema, invokeOperationRequestSchema, latestTransactionsSchema, transactionMonthSchema, } from '../schemas/index.js';
5
+ import { automationInputSchema, automationInvocationResponseSchema, automationOperationSchema, describeOperationRequestSchema, exportAccountSchema, exportBudgetSchema, exportDatasetResponseSchemas, exportGoalSchema, exportHealthSchema, exportHoldingSchema, exportLiabilitySchema, exportPaginationSchema, exportRecurringSchema, exportSnapshotSchema, exportTransactionSchema, financialContextMetaSchema, financialContextAccountSchema, financialContextBudgetSchema, financialContextGoalSchema, financialContextHealthSchema, financialContextHoldingSchema, financialContextLiabilitySchema, financialContextPositionSchema, financialContextRecurringSchema, financialContextSchema, financialContextSnapshotSchema, financialContextStatusSchema, financialContextTransactionIndexSchema, financialContextTransactionSchema, invokeOperationRequestSchema, latestTransactionsSchema, publicApiErrorSchema, transactionMonthSchema, verifyApiResponseSchema, } from '../schemas/index.js';
6
6
  function cloneBaseDocument() {
7
7
  return parse(baseOpenApiYaml);
8
8
  }
@@ -32,24 +32,18 @@ export function buildOpenApiDocument() {
32
32
  document.info.description = `Read your financial context or invoke supported Warm actions through a compact operation catalog.
33
33
 
34
34
  ## Authentication
35
- All requests use \`Authorization: Bearer\`. ${apiAuthSchemes.context.description}
36
- ${apiAuthSchemes.automation.description} Automation keys begin with \`${apiAuthSchemes.automation.bearer_prefix}\`.
35
+ All requests use \`Authorization: Bearer\`. ${apiKeyAuthScheme.description}
36
+ ${apiAuthorizationCapabilities.read_only.openApiDescription} ${apiAuthorizationCapabilities.automation.openApiDescription} API keys begin with \`${apiKeyAuthScheme.bearer_prefix}\`.
37
37
 
38
38
  ## Rate Limits
39
- - Context keys: ${apiRateLimits.context.requests_per_hour} requests per hour per key
40
- - Automation keys: ${apiRateLimits.automation.requests_per_hour} requests per hour per key
39
+ - API keys: ${WARM_API_KEY_RATE_LIMIT_PER_HOUR} requests per hour per key
41
40
  - Rate limit headers are included in authenticated responses.
42
41
  - \`/api/export\` supports dataset-scoped delta sync with \`since\` and publishes edge-cache metadata headers.`;
43
42
  document.servers[0].url = API_ORIGIN;
44
43
  document.components.securitySchemes = {
45
- AutomationKeyAuth: {
46
- description: `Automation format: Authorization: Bearer ${apiAuthSchemes.automation.bearer_prefix}...`,
47
- scheme: apiAuthSchemes.automation.scheme,
48
- type: 'http',
49
- },
50
44
  BearerAuth: {
51
- description: apiAuthSchemes.context.description,
52
- scheme: apiAuthSchemes.context.scheme,
45
+ description: `API key format: Authorization: Bearer warm_...; ${apiAuthorizationCapabilities.read_only.openApiDescription.toLowerCase()}`,
46
+ scheme: apiKeyAuthScheme.scheme,
53
47
  type: 'http',
54
48
  },
55
49
  };
@@ -59,14 +53,36 @@ ${apiAuthSchemes.automation.description} Automation keys begin with \`${apiAuthS
59
53
  throw new Error(`The OpenAPI base document is missing ${endpoint.method} ${endpoint.path}.`);
60
54
  }
61
55
  operation.operationId = endpoint.operation_id;
62
- operation.security = [
63
- endpoint.audience === 'automation' ? { AutomationKeyAuth: [] } : { BearerAuth: [] },
64
- ];
56
+ operation.security = [{ BearerAuth: [] }];
65
57
  operation.summary = endpoint.summary;
58
+ operation.description = [
59
+ operation.description,
60
+ `Authentication: ${apiAuthorizationCapabilities[endpoint.authorization].openApiDescription}`,
61
+ ]
62
+ .filter(Boolean)
63
+ .join('\n\n');
66
64
  }
67
65
  Object.assign(document.components.schemas, {
68
66
  AutomationInvocationResponse: schema(automationInvocationResponseSchema),
69
67
  AutomationOperation: schema(automationOperationSchema),
68
+ ExportAccount: schema(exportAccountSchema),
69
+ ExportAccountsResponse: schema(exportDatasetResponseSchemas.accounts),
70
+ ExportBudget: schema(exportBudgetSchema),
71
+ ExportBudgetsResponse: schema(exportDatasetResponseSchemas.budgets),
72
+ ExportGoal: schema(exportGoalSchema),
73
+ ExportGoalsResponse: schema(exportDatasetResponseSchemas.goals),
74
+ ExportHealthResponse: schema(exportHealthSchema),
75
+ ExportHolding: schema(exportHoldingSchema),
76
+ ExportHoldingsResponse: schema(exportDatasetResponseSchemas.holdings),
77
+ ExportLiability: schema(exportLiabilitySchema),
78
+ ExportLiabilitiesResponse: schema(exportDatasetResponseSchemas.liabilities),
79
+ ExportPagination: schema(exportPaginationSchema),
80
+ ExportRecurring: schema(exportRecurringSchema),
81
+ ExportRecurringResponse: schema(exportDatasetResponseSchemas.recurring),
82
+ ExportSnapshot: schema(exportSnapshotSchema),
83
+ ExportSnapshotsResponse: schema(exportDatasetResponseSchemas.snapshots),
84
+ ExportTransaction: schema(exportTransactionSchema),
85
+ ExportTransactionsResponse: schema(exportDatasetResponseSchemas.transactions),
70
86
  FinancialContext: schema(financialContextSchema),
71
87
  FinancialContextAccount: schema(financialContextAccountSchema),
72
88
  FinancialContextBudget: schema(financialContextBudgetSchema),
@@ -86,7 +102,50 @@ ${apiAuthSchemes.automation.description} Automation keys begin with \`${apiAuthS
86
102
  OperationRequest: schema(describeOperationRequestSchema),
87
103
  TransactionMonth: schema(transactionMonthSchema),
88
104
  TransactionIndex: schema(financialContextTransactionIndexSchema),
105
+ Error: schema(publicApiErrorSchema),
106
+ VerifyApiResponse: schema(verifyApiResponseSchema),
89
107
  });
108
+ const verifyOperation = document.paths['/api/verify']?.get;
109
+ const exportOperation = document.paths['/api/export']?.get;
110
+ if (!verifyOperation || !exportOperation) {
111
+ throw new Error('The OpenAPI base document is missing verify or export operations.');
112
+ }
113
+ verifyOperation.responses = {
114
+ ...verifyOperation.responses,
115
+ '200': {
116
+ content: {
117
+ 'application/json': {
118
+ schema: { $ref: '#/components/schemas/VerifyApiResponse' },
119
+ },
120
+ },
121
+ description: 'Credentials are valid and the caller has API access',
122
+ },
123
+ };
124
+ exportOperation.responses = {
125
+ ...exportOperation.responses,
126
+ '200': {
127
+ content: {
128
+ 'application/json': {
129
+ schema: {
130
+ oneOf: [
131
+ 'Accounts',
132
+ 'Transactions',
133
+ 'Snapshots',
134
+ 'Recurring',
135
+ 'Budgets',
136
+ 'Goals',
137
+ 'Health',
138
+ 'Liabilities',
139
+ 'Holdings',
140
+ ].map((dataset) => ({
141
+ $ref: `#/components/schemas/Export${dataset}Response`,
142
+ })),
143
+ },
144
+ },
145
+ },
146
+ description: 'Successful dataset export',
147
+ },
148
+ };
90
149
  return document;
91
150
  }
92
151
  export function buildOpenApiYaml() {