@warmio/contracts 1.1.0 → 1.2.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 (40) hide show
  1. package/dist/api/endpoints.d.ts +39 -19
  2. package/dist/api/endpoints.d.ts.map +1 -1
  3. package/dist/api/endpoints.js +47 -15
  4. package/dist/api/endpoints.js.map +1 -1
  5. package/dist/generated/private-mcp-tool-descriptors.d.ts +12 -12
  6. package/dist/generated/private-mcp-tool-descriptors.d.ts.map +1 -1
  7. package/dist/generated/private-mcp-tool-descriptors.js +12 -12
  8. package/dist/generated/private-mcp-tool-descriptors.js.map +1 -1
  9. package/dist/generated/protected-crawler-paths.d.ts +2 -0
  10. package/dist/generated/protected-crawler-paths.d.ts.map +1 -0
  11. package/dist/generated/protected-crawler-paths.js +34 -0
  12. package/dist/generated/protected-crawler-paths.js.map +1 -0
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/manifest.d.ts +1434 -1
  18. package/dist/manifest.d.ts.map +1 -1
  19. package/dist/manifest.js +59 -1
  20. package/dist/manifest.js.map +1 -1
  21. package/dist/mcp/distribution.d.ts +7 -2
  22. package/dist/mcp/distribution.d.ts.map +1 -1
  23. package/dist/mcp/distribution.js +6 -1
  24. package/dist/mcp/distribution.js.map +1 -1
  25. package/dist/mcp/tools.d.ts +6 -2
  26. package/dist/mcp/tools.d.ts.map +1 -1
  27. package/dist/mcp/tools.js +9 -3
  28. package/dist/mcp/tools.js.map +1 -1
  29. package/dist/openapi/build-openapi.d.ts.map +1 -1
  30. package/dist/openapi/build-openapi.js +7 -1
  31. package/dist/openapi/build-openapi.js.map +1 -1
  32. package/dist/product.d.ts +47 -0
  33. package/dist/product.d.ts.map +1 -0
  34. package/dist/product.js +17 -0
  35. package/dist/product.js.map +1 -0
  36. package/dist/public-discovery.d.ts +116 -0
  37. package/dist/public-discovery.d.ts.map +1 -0
  38. package/dist/public-discovery.js +91 -0
  39. package/dist/public-discovery.js.map +1 -0
  40. package/package.json +16 -1
@@ -1,4 +1,1437 @@
1
- export { apiAuthSchemes, apiEndpointManifest, apiKeyPrefixesByAudience, apiRateLimits, API_ORIGIN, DEVELOPERS_PATH, DISCOVERY_ORIGIN, OPENAPI_PATH, PUBLIC_DISCOVERY_MCP_PATH, PUBLIC_DOCS_ORIGIN, VERIFY_PATH, automationOperationDescriptors, } from './api/index.js';
1
+ export { apiAudienceRegistry, apiAuthSchemes, apiEndpointManifest, apiKeyPrefixesByAudience, apiRateLimits, API_ORIGIN, DEVELOPERS_PATH, DISCOVERY_ORIGIN, OPENAPI_PATH, PUBLIC_DISCOVERY_MCP_PATH, PUBLIC_DOCS_ORIGIN, PUBLIC_LLMS_TXT_PATH, VERIFY_PATH, automationOperationDescriptors, } from './api/index.js';
2
2
  export { privateMcpToolDescriptors, type PrivateMcpToolDescriptor, } from './generated/private-mcp-tool-descriptors.js';
3
3
  export { WARM_MCP_CLIENTS, WARM_MCP_CREDENTIALS, WARM_MCP_INSTALL_COMMAND, WARM_MCP_INSTALLER_COMMANDS, WARM_MCP_MANIFEST, WARM_MCP_MINIMUM_NODE_VERSION, WARM_MCP_MODES, WARM_MCP_PACKAGE_NAME, WARM_MCP_PACKAGE_SPEC, WARM_MCP_PROJECT_CONFIGS, WARM_MCP_SERVER_COMMANDS, WARM_MCP_SERVER_CONFIGS, type PrivateMcpMode, type WarmMcpClientId, type WarmMcpConfigPath, } from './mcp/distribution.js';
4
+ export { protectedCrawlerPaths } from './generated/protected-crawler-paths.js';
5
+ /** Complete serializable release value used for provenance and downstream drift checks. */
6
+ export declare const contractReleaseManifest: {
7
+ readonly api: {
8
+ readonly audiences: {
9
+ readonly automation: {
10
+ readonly auth: {
11
+ readonly bearer_prefix: 'warm_auto_';
12
+ readonly challenge: 'Bearer';
13
+ readonly description: 'Automation routes require an automation API key.';
14
+ readonly methods: readonly ['Bearer'];
15
+ };
16
+ readonly expires_in_days: 90;
17
+ readonly mcp_mode: 'automation';
18
+ readonly rate_limit_per_hour: 500;
19
+ readonly scopes: readonly ['financial:read', 'automation:invoke'];
20
+ };
21
+ readonly context: {
22
+ readonly auth: {
23
+ readonly bearer_prefix: 'warm_ctx_';
24
+ readonly challenge: 'Bearer';
25
+ readonly description: 'Read/export routes accept a Warm API key or signed-in access token.';
26
+ readonly methods: readonly ['Bearer'];
27
+ };
28
+ readonly expires_in_days: null;
29
+ readonly mcp_mode: 'context';
30
+ readonly rate_limit_per_hour: 200;
31
+ readonly scopes: readonly ['financial:read'];
32
+ };
33
+ };
34
+ readonly endpoints: readonly [{
35
+ readonly audience: 'context';
36
+ readonly method: 'GET';
37
+ readonly operation_id: 'verifyApiAccess';
38
+ readonly path: "/api/verify";
39
+ readonly summary: 'Verify API credentials';
40
+ }, {
41
+ readonly audience: 'context';
42
+ readonly method: 'GET';
43
+ readonly operation_id: 'getDatasetExport';
44
+ readonly path: '/api/export';
45
+ readonly summary: 'Get a typed dataset export';
46
+ }, {
47
+ readonly audience: 'context';
48
+ readonly method: 'GET';
49
+ readonly operation_id: 'getFinancialContext';
50
+ readonly path: '/api/financial-context';
51
+ readonly summary: 'Get compact financial context';
52
+ }, {
53
+ readonly audience: 'context';
54
+ readonly method: 'GET';
55
+ readonly operation_id: 'getFinancialContextTransactions';
56
+ readonly path: '/api/financial-context/transactions';
57
+ readonly summary: 'Get financial-context transactions';
58
+ }, {
59
+ readonly audience: 'context';
60
+ readonly method: 'GET';
61
+ readonly operation_id: 'getFinancialContextMeta';
62
+ readonly path: '/api/financial-context/meta';
63
+ readonly summary: 'Get financial-context metadata';
64
+ }, {
65
+ readonly audience: 'automation';
66
+ readonly method: 'POST';
67
+ readonly operation_id: 'searchOperations';
68
+ readonly path: '/api/automation/operations/search';
69
+ readonly summary: 'Search supported automation operations';
70
+ }, {
71
+ readonly audience: 'automation';
72
+ readonly method: 'POST';
73
+ readonly operation_id: 'describeOperation';
74
+ readonly path: '/api/automation/operations/describe';
75
+ readonly summary: 'Describe one supported operation';
76
+ }, {
77
+ readonly audience: 'automation';
78
+ readonly method: 'POST';
79
+ readonly operation_id: 'invokeOperation';
80
+ readonly path: '/api/automation/operations/invoke';
81
+ readonly summary: 'Invoke one supported operation';
82
+ }];
83
+ readonly origins: {
84
+ readonly api: "https://app.warm.io";
85
+ readonly discovery: "https://warm.io";
86
+ readonly publicDocs: "https://warm.io";
87
+ };
88
+ readonly paths: {
89
+ readonly developers: "/developers";
90
+ readonly llms: "/llms.txt";
91
+ readonly openapi: "/openapi.yaml";
92
+ readonly publicDiscoveryMcp: "/mcp";
93
+ readonly verify: "/api/verify";
94
+ };
95
+ };
96
+ readonly mcp: {
97
+ readonly distribution: {
98
+ readonly clients: readonly [{
99
+ readonly id: 'claude-code';
100
+ readonly name: 'Claude Code';
101
+ readonly format: 'json';
102
+ readonly alwaysInclude: true;
103
+ readonly configPaths: {
104
+ readonly darwin: {
105
+ readonly root: 'home';
106
+ readonly segments: readonly ['.claude.json'];
107
+ };
108
+ readonly linux: {
109
+ readonly root: 'home';
110
+ readonly segments: readonly ['.claude.json'];
111
+ };
112
+ readonly win32: {
113
+ readonly root: 'home';
114
+ readonly segments: readonly ['.claude.json'];
115
+ };
116
+ };
117
+ }, {
118
+ readonly id: 'claude-desktop';
119
+ readonly name: 'Claude Desktop';
120
+ readonly format: 'json';
121
+ readonly configPaths: {
122
+ readonly darwin: {
123
+ readonly root: 'home';
124
+ readonly segments: readonly ['Library', 'Application Support', 'Claude', 'claude_desktop_config.json'];
125
+ };
126
+ readonly linux: {
127
+ readonly root: 'home';
128
+ readonly segments: readonly ['.config', 'claude', 'claude_desktop_config.json'];
129
+ };
130
+ readonly win32: {
131
+ readonly root: 'appData';
132
+ readonly segments: readonly ['Claude', 'claude_desktop_config.json'];
133
+ };
134
+ };
135
+ }, {
136
+ readonly id: 'cursor';
137
+ readonly name: 'Cursor';
138
+ readonly format: 'json';
139
+ readonly configPaths: {
140
+ readonly darwin: {
141
+ readonly root: 'home';
142
+ readonly segments: readonly ['.cursor', 'mcp.json'];
143
+ };
144
+ readonly linux: {
145
+ readonly root: 'home';
146
+ readonly segments: readonly ['.cursor', 'mcp.json'];
147
+ };
148
+ readonly win32: {
149
+ readonly root: 'home';
150
+ readonly segments: readonly ['.cursor', 'mcp.json'];
151
+ };
152
+ };
153
+ }, {
154
+ readonly id: 'windsurf';
155
+ readonly name: 'Windsurf';
156
+ readonly format: 'json';
157
+ readonly configPaths: {
158
+ readonly darwin: {
159
+ readonly root: 'home';
160
+ readonly segments: readonly ['.codeium', 'windsurf', 'mcp_config.json'];
161
+ };
162
+ readonly linux: {
163
+ readonly root: 'home';
164
+ readonly segments: readonly ['.codeium', 'windsurf', 'mcp_config.json'];
165
+ };
166
+ readonly win32: {
167
+ readonly root: 'home';
168
+ readonly segments: readonly ['.codeium', 'windsurf', 'mcp_config.json'];
169
+ };
170
+ };
171
+ }, {
172
+ readonly id: 'opencode';
173
+ readonly name: 'OpenCode';
174
+ readonly format: 'json';
175
+ readonly configPaths: {
176
+ readonly darwin: {
177
+ readonly root: 'home';
178
+ readonly segments: readonly ['.config', 'opencode', 'opencode.json'];
179
+ };
180
+ readonly linux: {
181
+ readonly root: 'home';
182
+ readonly segments: readonly ['.config', 'opencode', 'opencode.json'];
183
+ };
184
+ readonly win32: {
185
+ readonly root: 'home';
186
+ readonly segments: readonly ['.config', 'opencode', 'opencode.json'];
187
+ };
188
+ };
189
+ }, {
190
+ readonly id: 'codex-cli';
191
+ readonly name: 'Codex CLI';
192
+ readonly format: 'toml';
193
+ readonly configPaths: {
194
+ readonly darwin: {
195
+ readonly root: 'home';
196
+ readonly segments: readonly ['.codex', 'config.toml'];
197
+ };
198
+ readonly linux: {
199
+ readonly root: 'home';
200
+ readonly segments: readonly ['.codex', 'config.toml'];
201
+ };
202
+ readonly win32: {
203
+ readonly root: 'home';
204
+ readonly segments: readonly ['.codex', 'config.toml'];
205
+ };
206
+ };
207
+ }, {
208
+ readonly id: 'antigravity';
209
+ readonly name: 'Antigravity';
210
+ readonly format: 'json';
211
+ readonly configPaths: {
212
+ readonly darwin: {
213
+ readonly root: 'home';
214
+ readonly segments: readonly ['.gemini', 'antigravity', 'mcp_config.json'];
215
+ };
216
+ readonly linux: {
217
+ readonly root: 'home';
218
+ readonly segments: readonly ['.gemini', 'antigravity', 'mcp_config.json'];
219
+ };
220
+ readonly win32: {
221
+ readonly root: 'home';
222
+ readonly segments: readonly ['.gemini', 'antigravity', 'mcp_config.json'];
223
+ };
224
+ };
225
+ }, {
226
+ readonly id: 'gemini-cli';
227
+ readonly name: 'Gemini CLI';
228
+ readonly format: 'json';
229
+ readonly configPaths: {
230
+ readonly darwin: {
231
+ readonly root: 'home';
232
+ readonly segments: readonly ['.gemini', 'settings.json'];
233
+ };
234
+ readonly linux: {
235
+ readonly root: 'home';
236
+ readonly segments: readonly ['.gemini', 'settings.json'];
237
+ };
238
+ readonly win32: {
239
+ readonly root: 'home';
240
+ readonly segments: readonly ['.gemini', 'settings.json'];
241
+ };
242
+ };
243
+ }];
244
+ readonly credentials: {
245
+ readonly automation: {
246
+ readonly apiKeyEnv: 'WARM_AUTOMATION_API_KEY';
247
+ readonly apiKeyFileEnv: 'WARM_AUTOMATION_API_KEY_FILE';
248
+ readonly defaultFileName: 'automation_api_key';
249
+ };
250
+ readonly context: {
251
+ readonly apiKeyEnv: 'WARM_CONTEXT_API_KEY';
252
+ readonly apiKeyFileEnv: 'WARM_CONTEXT_API_KEY_FILE';
253
+ readonly defaultFileName: 'context_api_key';
254
+ };
255
+ };
256
+ readonly installCommand: "npx -y @warmio/mcp@latest";
257
+ readonly installerCommands: {
258
+ readonly automation: "npx -y @warmio/mcp@latest install --mode automation";
259
+ readonly context: "npx -y @warmio/mcp@latest install --mode context";
260
+ };
261
+ readonly minimumNodeVersion: ">=18";
262
+ readonly modes: ["automation" | "context", ...("automation" | "context")[]];
263
+ readonly packageName: "@warmio/mcp";
264
+ readonly packageSpec: "@warmio/mcp@latest";
265
+ readonly projectConfigs: readonly [".mcp.json", ".cursor/mcp.json", ".vscode/mcp.json"];
266
+ readonly serverCommands: {
267
+ readonly automation: "npx -y @warmio/mcp@latest mcp --mode automation";
268
+ readonly context: "npx -y @warmio/mcp@latest mcp --mode context";
269
+ };
270
+ readonly serverConfigs: {
271
+ readonly automation: {
272
+ readonly serverName: 'warm-automation';
273
+ readonly command: 'npx';
274
+ readonly args: readonly ["-y", "@warmio/mcp@latest", "mcp", "--mode", "automation"];
275
+ };
276
+ readonly context: {
277
+ readonly serverName: 'warm';
278
+ readonly command: 'npx';
279
+ readonly args: readonly ["-y", "@warmio/mcp@latest", "mcp", "--mode", "context"];
280
+ };
281
+ };
282
+ };
283
+ readonly tools: readonly [{
284
+ readonly mode: "context";
285
+ readonly name: "get_financial_context";
286
+ readonly 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.";
287
+ readonly annotations: {
288
+ readonly readOnlyHint: true;
289
+ readonly destructiveHint: false;
290
+ readonly openWorldHint: false;
291
+ };
292
+ readonly input_schema: {
293
+ readonly type: "object";
294
+ readonly properties: {};
295
+ readonly additionalProperties: false;
296
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
297
+ };
298
+ readonly output_schema: {
299
+ readonly type: "object";
300
+ readonly properties: {
301
+ readonly version: {
302
+ readonly type: "string";
303
+ readonly enum: readonly ["v1"];
304
+ };
305
+ readonly updated_at: {
306
+ readonly type: "string";
307
+ readonly format: "date-time";
308
+ };
309
+ readonly currency: {
310
+ readonly type: "string";
311
+ readonly enum: readonly ["USD"];
312
+ };
313
+ readonly status: {
314
+ readonly type: "object";
315
+ readonly properties: {
316
+ readonly position: {
317
+ readonly anyOf: readonly [{
318
+ readonly type: "object";
319
+ readonly properties: {
320
+ readonly date: {
321
+ readonly anyOf: readonly [{
322
+ readonly type: "string";
323
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
324
+ }, {
325
+ readonly type: "null";
326
+ }];
327
+ };
328
+ readonly net_worth: {
329
+ readonly anyOf: readonly [{
330
+ readonly type: "number";
331
+ }, {
332
+ readonly type: "null";
333
+ }];
334
+ };
335
+ readonly cash: {
336
+ readonly anyOf: readonly [{
337
+ readonly type: "number";
338
+ }, {
339
+ readonly type: "null";
340
+ }];
341
+ };
342
+ readonly debt: {
343
+ readonly anyOf: readonly [{
344
+ readonly type: "number";
345
+ }, {
346
+ readonly type: "null";
347
+ }];
348
+ };
349
+ readonly investments: {
350
+ readonly anyOf: readonly [{
351
+ readonly type: "number";
352
+ }, {
353
+ readonly type: "null";
354
+ }];
355
+ };
356
+ readonly other_assets: {
357
+ readonly anyOf: readonly [{
358
+ readonly type: "number";
359
+ }, {
360
+ readonly type: "null";
361
+ }];
362
+ };
363
+ readonly total_assets: {
364
+ readonly anyOf: readonly [{
365
+ readonly type: "number";
366
+ }, {
367
+ readonly type: "null";
368
+ }];
369
+ };
370
+ };
371
+ readonly required: readonly ["date", "net_worth", "cash", "debt", "investments", "other_assets", "total_assets"];
372
+ readonly additionalProperties: false;
373
+ }, {
374
+ readonly type: "null";
375
+ }];
376
+ };
377
+ readonly accounts: {
378
+ readonly type: "array";
379
+ readonly items: {
380
+ readonly type: "object";
381
+ readonly properties: {
382
+ readonly id: {
383
+ readonly type: "string";
384
+ };
385
+ readonly name: {
386
+ readonly type: "string";
387
+ };
388
+ readonly source: {
389
+ readonly anyOf: readonly [{
390
+ readonly type: "string";
391
+ readonly enum: readonly ["plaid", "manual", "csv_import"];
392
+ }, {
393
+ readonly type: "null";
394
+ }];
395
+ };
396
+ readonly type: {
397
+ readonly type: "string";
398
+ readonly enum: readonly ["depository", "credit", "loan", "investment", "brokerage", "other"];
399
+ };
400
+ readonly subtype: {
401
+ readonly type: readonly ["string", "null"];
402
+ };
403
+ readonly group: {
404
+ readonly anyOf: readonly [{
405
+ readonly type: "string";
406
+ readonly enum: readonly ["cash", "debt", "investments"];
407
+ }, {
408
+ readonly type: "null";
409
+ }];
410
+ };
411
+ readonly institution: {
412
+ readonly type: readonly ["string", "null"];
413
+ };
414
+ readonly mask: {
415
+ readonly type: readonly ["string", "null"];
416
+ };
417
+ readonly balance: {
418
+ readonly anyOf: readonly [{
419
+ readonly type: "number";
420
+ }, {
421
+ readonly type: "null";
422
+ }];
423
+ };
424
+ readonly available: {
425
+ readonly anyOf: readonly [{
426
+ readonly type: "number";
427
+ }, {
428
+ readonly type: "null";
429
+ }];
430
+ };
431
+ readonly currency: {
432
+ readonly type: readonly ["string", "null"];
433
+ };
434
+ readonly updated_at: {
435
+ readonly anyOf: readonly [{
436
+ readonly type: "string";
437
+ readonly format: "date-time";
438
+ }, {
439
+ readonly type: "null";
440
+ }];
441
+ };
442
+ };
443
+ readonly required: readonly ["id", "name", "source", "type", "subtype", "group", "institution", "mask", "balance", "available", "currency", "updated_at"];
444
+ readonly additionalProperties: false;
445
+ };
446
+ };
447
+ };
448
+ readonly required: readonly ["position", "accounts"];
449
+ readonly additionalProperties: false;
450
+ };
451
+ readonly transactions: {
452
+ readonly type: "object";
453
+ readonly properties: {
454
+ readonly total: {
455
+ readonly type: "integer";
456
+ readonly minimum: 0;
457
+ };
458
+ readonly months: {
459
+ readonly type: "array";
460
+ readonly items: {
461
+ readonly type: "object";
462
+ readonly properties: {
463
+ readonly month: {
464
+ readonly type: "string";
465
+ readonly pattern: "^\\d{4}-(0[1-9]|1[0-2])$";
466
+ };
467
+ readonly count: {
468
+ readonly type: "integer";
469
+ readonly minimum: 0;
470
+ };
471
+ };
472
+ readonly required: readonly ["month", "count"];
473
+ readonly additionalProperties: false;
474
+ };
475
+ };
476
+ };
477
+ readonly required: readonly ["total", "months"];
478
+ readonly additionalProperties: false;
479
+ };
480
+ readonly recurring: {
481
+ readonly type: "array";
482
+ readonly items: {
483
+ readonly type: "object";
484
+ readonly properties: {
485
+ readonly id: {
486
+ readonly type: "string";
487
+ };
488
+ readonly account_id: {
489
+ readonly type: readonly ["string", "null"];
490
+ };
491
+ readonly direction: {
492
+ readonly anyOf: readonly [{
493
+ readonly type: "string";
494
+ readonly enum: readonly ["inflow", "outflow"];
495
+ }, {
496
+ readonly type: "null";
497
+ }];
498
+ };
499
+ readonly frequency: {
500
+ readonly anyOf: readonly [{
501
+ readonly type: "string";
502
+ readonly enum: readonly ["WEEKLY", "BIWEEKLY", "MONTHLY", "QUARTERLY", "SEMI_ANNUALLY", "ANNUALLY"];
503
+ }, {
504
+ readonly type: "null";
505
+ }];
506
+ };
507
+ readonly status: {
508
+ readonly anyOf: readonly [{
509
+ readonly type: "string";
510
+ readonly enum: readonly ["active", "inactive", "dismissed"];
511
+ }, {
512
+ readonly type: "null";
513
+ }];
514
+ };
515
+ readonly merchant: {
516
+ readonly type: readonly ["string", "null"];
517
+ };
518
+ readonly amount: {
519
+ readonly anyOf: readonly [{
520
+ readonly type: "number";
521
+ }, {
522
+ readonly type: "null";
523
+ }];
524
+ };
525
+ readonly next_date: {
526
+ readonly anyOf: readonly [{
527
+ readonly type: "string";
528
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
529
+ }, {
530
+ readonly type: "null";
531
+ }];
532
+ };
533
+ };
534
+ readonly required: readonly ["id", "account_id", "direction", "frequency", "status", "merchant", "amount", "next_date"];
535
+ readonly additionalProperties: false;
536
+ };
537
+ };
538
+ readonly budgets: {
539
+ readonly type: "array";
540
+ readonly items: {
541
+ readonly type: "object";
542
+ readonly properties: {
543
+ readonly id: {
544
+ readonly type: "string";
545
+ };
546
+ readonly name: {
547
+ readonly type: "string";
548
+ };
549
+ readonly type: {
550
+ readonly type: "string";
551
+ readonly enum: readonly ["category", "merchant"];
552
+ };
553
+ readonly period: {
554
+ readonly type: "string";
555
+ readonly enum: readonly ["weekly", "biweekly", "monthly"];
556
+ };
557
+ readonly status: {
558
+ readonly type: "string";
559
+ readonly enum: readonly ["under", "warning", "over"];
560
+ };
561
+ readonly amount: {
562
+ readonly type: "number";
563
+ };
564
+ readonly spent: {
565
+ readonly type: "number";
566
+ };
567
+ readonly remaining: {
568
+ readonly type: "number";
569
+ };
570
+ readonly used_percent: {
571
+ readonly type: "number";
572
+ };
573
+ };
574
+ readonly required: readonly ["id", "name", "type", "period", "status", "amount", "spent", "remaining", "used_percent"];
575
+ readonly additionalProperties: false;
576
+ };
577
+ };
578
+ readonly goals: {
579
+ readonly type: "array";
580
+ readonly items: {
581
+ readonly type: "object";
582
+ readonly properties: {
583
+ readonly id: {
584
+ readonly type: "string";
585
+ };
586
+ readonly name: {
587
+ readonly type: "string";
588
+ };
589
+ readonly category: {
590
+ readonly type: "string";
591
+ };
592
+ readonly status: {
593
+ readonly type: "string";
594
+ readonly enum: readonly ["not_started", "in_progress", "on_track", "behind", "completed"];
595
+ };
596
+ readonly target: {
597
+ readonly type: "number";
598
+ };
599
+ readonly current: {
600
+ readonly type: "number";
601
+ };
602
+ readonly progress_percent: {
603
+ readonly type: "number";
604
+ };
605
+ readonly target_date: {
606
+ readonly anyOf: readonly [{
607
+ readonly type: "string";
608
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
609
+ }, {
610
+ readonly type: "null";
611
+ }];
612
+ };
613
+ };
614
+ readonly required: readonly ["id", "name", "category", "status", "target", "current", "progress_percent", "target_date"];
615
+ readonly additionalProperties: false;
616
+ };
617
+ };
618
+ readonly snapshots: {
619
+ readonly type: "array";
620
+ readonly items: {
621
+ readonly type: "object";
622
+ readonly properties: {
623
+ readonly date: {
624
+ readonly type: "string";
625
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
626
+ };
627
+ readonly net_worth: {
628
+ readonly anyOf: readonly [{
629
+ readonly type: "number";
630
+ }, {
631
+ readonly type: "null";
632
+ }];
633
+ };
634
+ readonly cash: {
635
+ readonly anyOf: readonly [{
636
+ readonly type: "number";
637
+ }, {
638
+ readonly type: "null";
639
+ }];
640
+ };
641
+ readonly debt: {
642
+ readonly anyOf: readonly [{
643
+ readonly type: "number";
644
+ }, {
645
+ readonly type: "null";
646
+ }];
647
+ };
648
+ readonly income: {
649
+ readonly anyOf: readonly [{
650
+ readonly type: "number";
651
+ }, {
652
+ readonly type: "null";
653
+ }];
654
+ };
655
+ readonly expenses: {
656
+ readonly anyOf: readonly [{
657
+ readonly type: "number";
658
+ }, {
659
+ readonly type: "null";
660
+ }];
661
+ };
662
+ readonly cash_flow: {
663
+ readonly anyOf: readonly [{
664
+ readonly type: "number";
665
+ }, {
666
+ readonly type: "null";
667
+ }];
668
+ };
669
+ readonly savings_rate: {
670
+ readonly anyOf: readonly [{
671
+ readonly type: "number";
672
+ }, {
673
+ readonly type: "null";
674
+ }];
675
+ };
676
+ readonly investments: {
677
+ readonly anyOf: readonly [{
678
+ readonly type: "number";
679
+ }, {
680
+ readonly type: "null";
681
+ }];
682
+ };
683
+ readonly assets: {
684
+ readonly anyOf: readonly [{
685
+ readonly type: "number";
686
+ }, {
687
+ readonly type: "null";
688
+ }];
689
+ };
690
+ readonly health_score: {
691
+ readonly anyOf: readonly [{
692
+ readonly type: "number";
693
+ }, {
694
+ readonly type: "null";
695
+ }];
696
+ };
697
+ };
698
+ readonly required: readonly ["date", "net_worth", "cash", "debt", "income", "expenses", "cash_flow", "savings_rate", "investments", "assets", "health_score"];
699
+ readonly additionalProperties: false;
700
+ };
701
+ };
702
+ readonly liabilities: {
703
+ readonly type: "array";
704
+ readonly items: {
705
+ readonly type: "object";
706
+ readonly properties: {
707
+ readonly account_id: {
708
+ readonly type: readonly ["string", "null"];
709
+ };
710
+ readonly type: {
711
+ readonly anyOf: readonly [{
712
+ readonly type: "string";
713
+ readonly enum: readonly ["credit", "student", "mortgage", "other"];
714
+ }, {
715
+ readonly type: "null";
716
+ }];
717
+ };
718
+ readonly balance: {
719
+ readonly anyOf: readonly [{
720
+ readonly type: "number";
721
+ }, {
722
+ readonly type: "null";
723
+ }];
724
+ };
725
+ readonly minimum_payment: {
726
+ readonly anyOf: readonly [{
727
+ readonly type: "number";
728
+ }, {
729
+ readonly type: "null";
730
+ }];
731
+ };
732
+ readonly due_date: {
733
+ readonly anyOf: readonly [{
734
+ readonly type: "string";
735
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
736
+ }, {
737
+ readonly type: "null";
738
+ }];
739
+ };
740
+ readonly interest_rate: {
741
+ readonly anyOf: readonly [{
742
+ readonly type: "number";
743
+ }, {
744
+ readonly type: "null";
745
+ }];
746
+ };
747
+ readonly rate_type: {
748
+ readonly anyOf: readonly [{
749
+ readonly type: "string";
750
+ readonly enum: readonly ["fixed", "variable"];
751
+ }, {
752
+ readonly type: "null";
753
+ }];
754
+ };
755
+ readonly overdue: {
756
+ readonly type: readonly ["boolean", "null"];
757
+ };
758
+ };
759
+ readonly required: readonly ["account_id", "type", "balance", "minimum_payment", "due_date", "interest_rate", "rate_type", "overdue"];
760
+ readonly additionalProperties: false;
761
+ };
762
+ };
763
+ readonly holdings: {
764
+ readonly type: "array";
765
+ readonly items: {
766
+ readonly type: "object";
767
+ readonly properties: {
768
+ readonly account_id: {
769
+ readonly type: readonly ["string", "null"];
770
+ };
771
+ readonly symbol: {
772
+ readonly type: readonly ["string", "null"];
773
+ };
774
+ readonly name: {
775
+ readonly type: readonly ["string", "null"];
776
+ };
777
+ readonly type: {
778
+ readonly anyOf: readonly [{
779
+ readonly type: "string";
780
+ readonly enum: readonly ["cash", "derivative", "equity", "etf", "fixed_income", "mutual_fund", "other"];
781
+ }, {
782
+ readonly type: "null";
783
+ }];
784
+ };
785
+ readonly quantity: {
786
+ readonly anyOf: readonly [{
787
+ readonly type: "number";
788
+ }, {
789
+ readonly type: "null";
790
+ }];
791
+ };
792
+ readonly value: {
793
+ readonly anyOf: readonly [{
794
+ readonly type: "number";
795
+ }, {
796
+ readonly type: "null";
797
+ }];
798
+ };
799
+ readonly cost_basis: {
800
+ readonly anyOf: readonly [{
801
+ readonly type: "number";
802
+ }, {
803
+ readonly type: "null";
804
+ }];
805
+ };
806
+ };
807
+ readonly required: readonly ["account_id", "symbol", "name", "type", "quantity", "value", "cost_basis"];
808
+ readonly additionalProperties: false;
809
+ };
810
+ };
811
+ readonly health: {
812
+ readonly anyOf: readonly [{
813
+ readonly type: "object";
814
+ readonly properties: {
815
+ readonly score: {
816
+ readonly type: "number";
817
+ };
818
+ readonly label: {
819
+ readonly type: "string";
820
+ readonly enum: readonly ["Needs Attention", "Good", "Strong"];
821
+ };
822
+ readonly level: {
823
+ readonly type: "string";
824
+ readonly enum: readonly ["strong", "good", "fair", "poor", "critical"];
825
+ };
826
+ readonly summary: {
827
+ readonly type: "string";
828
+ };
829
+ readonly data_completeness: {
830
+ readonly type: "number";
831
+ };
832
+ readonly pillars: {
833
+ readonly anyOf: readonly [{
834
+ readonly type: "object";
835
+ readonly properties: {
836
+ readonly spend: {
837
+ readonly anyOf: readonly [{
838
+ readonly type: "number";
839
+ }, {
840
+ readonly type: "null";
841
+ }];
842
+ };
843
+ readonly save: {
844
+ readonly anyOf: readonly [{
845
+ readonly type: "number";
846
+ }, {
847
+ readonly type: "null";
848
+ }];
849
+ };
850
+ readonly borrow: {
851
+ readonly anyOf: readonly [{
852
+ readonly type: "number";
853
+ }, {
854
+ readonly type: "null";
855
+ }];
856
+ };
857
+ readonly build: {
858
+ readonly anyOf: readonly [{
859
+ readonly type: "number";
860
+ }, {
861
+ readonly type: "null";
862
+ }];
863
+ };
864
+ };
865
+ readonly required: readonly ["spend", "save", "borrow", "build"];
866
+ readonly additionalProperties: false;
867
+ }, {
868
+ readonly type: "null";
869
+ }];
870
+ };
871
+ };
872
+ readonly required: readonly ["score", "label", "level", "summary", "data_completeness", "pillars"];
873
+ readonly additionalProperties: false;
874
+ }, {
875
+ readonly type: "null";
876
+ }];
877
+ };
878
+ };
879
+ readonly required: readonly ["version", "updated_at", "currency", "status", "transactions", "recurring", "budgets", "goals", "snapshots", "liabilities", "holdings", "health"];
880
+ readonly additionalProperties: false;
881
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
882
+ };
883
+ }, {
884
+ readonly mode: "context";
885
+ readonly name: "get_transactions";
886
+ readonly description: "Read-only transactions from the FinancialContext artifact. Pass exactly one selector: `month` in YYYY-MM format for a month page, or `latest: true` for the fixed latest window. A bare call with no arguments defaults to `latest: true`. The latest window is fixed at 10 days and is not caller-configurable. `month` and `latest` are mutually exclusive. Months outside the covered range return an error.";
887
+ readonly annotations: {
888
+ readonly readOnlyHint: true;
889
+ readonly destructiveHint: false;
890
+ readonly openWorldHint: false;
891
+ };
892
+ readonly input_schema: {
893
+ readonly type: "object";
894
+ readonly properties: {
895
+ readonly month: {
896
+ readonly type: "string";
897
+ readonly pattern: "^\\d{4}-\\d{2}$";
898
+ readonly description: "Transaction month in YYYY-MM format. Mutually exclusive with latest. Months outside the covered range return an error.";
899
+ };
900
+ readonly latest: {
901
+ readonly type: "boolean";
902
+ readonly const: true;
903
+ readonly description: "When true, return the fixed 10-day latest window. Mutually exclusive with month. A bare call with no arguments defaults to latest: true.";
904
+ };
905
+ };
906
+ readonly additionalProperties: false;
907
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
908
+ };
909
+ readonly output_schema: {
910
+ readonly anyOf: readonly [{
911
+ readonly type: "object";
912
+ readonly properties: {
913
+ readonly month: {
914
+ readonly type: "string";
915
+ readonly pattern: "^\\d{4}-(0[1-9]|1[0-2])$";
916
+ };
917
+ readonly start_date: {
918
+ readonly type: "string";
919
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
920
+ };
921
+ readonly end_date: {
922
+ readonly type: "string";
923
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
924
+ };
925
+ readonly count: {
926
+ readonly type: "integer";
927
+ readonly minimum: 0;
928
+ };
929
+ readonly items: {
930
+ readonly type: "array";
931
+ readonly items: {
932
+ readonly type: "object";
933
+ readonly properties: {
934
+ readonly id: {
935
+ readonly type: "string";
936
+ };
937
+ readonly account_id: {
938
+ readonly type: readonly ["string", "null"];
939
+ };
940
+ readonly date: {
941
+ readonly anyOf: readonly [{
942
+ readonly type: "string";
943
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
944
+ }, {
945
+ readonly type: "null";
946
+ }];
947
+ };
948
+ readonly amount: {
949
+ readonly type: "number";
950
+ };
951
+ readonly merchant: {
952
+ readonly type: readonly ["string", "null"];
953
+ };
954
+ readonly name: {
955
+ readonly type: readonly ["string", "null"];
956
+ };
957
+ readonly category: {
958
+ readonly type: readonly ["string", "null"];
959
+ };
960
+ readonly subcategory: {
961
+ readonly type: readonly ["string", "null"];
962
+ };
963
+ readonly pending: {
964
+ readonly type: readonly ["boolean", "null"];
965
+ };
966
+ readonly currency: {
967
+ readonly type: readonly ["string", "null"];
968
+ };
969
+ };
970
+ readonly required: readonly ["id", "account_id", "date", "amount", "merchant", "name", "category", "subcategory", "pending", "currency"];
971
+ readonly additionalProperties: false;
972
+ };
973
+ };
974
+ };
975
+ readonly required: readonly ["month", "start_date", "end_date", "count", "items"];
976
+ readonly additionalProperties: false;
977
+ }, {
978
+ readonly type: "object";
979
+ readonly properties: {
980
+ readonly since: {
981
+ readonly type: "string";
982
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
983
+ };
984
+ readonly window_days: {
985
+ readonly type: "number";
986
+ readonly const: 10;
987
+ };
988
+ readonly count: {
989
+ readonly type: "integer";
990
+ readonly minimum: 0;
991
+ };
992
+ readonly items: {
993
+ readonly type: "array";
994
+ readonly items: {
995
+ readonly type: "object";
996
+ readonly properties: {
997
+ readonly id: {
998
+ readonly type: "string";
999
+ };
1000
+ readonly account_id: {
1001
+ readonly type: readonly ["string", "null"];
1002
+ };
1003
+ readonly date: {
1004
+ readonly anyOf: readonly [{
1005
+ readonly type: "string";
1006
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
1007
+ }, {
1008
+ readonly type: "null";
1009
+ }];
1010
+ };
1011
+ readonly amount: {
1012
+ readonly type: "number";
1013
+ };
1014
+ readonly merchant: {
1015
+ readonly type: readonly ["string", "null"];
1016
+ };
1017
+ readonly name: {
1018
+ readonly type: readonly ["string", "null"];
1019
+ };
1020
+ readonly category: {
1021
+ readonly type: readonly ["string", "null"];
1022
+ };
1023
+ readonly subcategory: {
1024
+ readonly type: readonly ["string", "null"];
1025
+ };
1026
+ readonly pending: {
1027
+ readonly type: readonly ["boolean", "null"];
1028
+ };
1029
+ readonly currency: {
1030
+ readonly type: readonly ["string", "null"];
1031
+ };
1032
+ };
1033
+ readonly required: readonly ["id", "account_id", "date", "amount", "merchant", "name", "category", "subcategory", "pending", "currency"];
1034
+ readonly additionalProperties: false;
1035
+ };
1036
+ };
1037
+ };
1038
+ readonly required: readonly ["since", "window_days", "count", "items"];
1039
+ readonly additionalProperties: false;
1040
+ }];
1041
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
1042
+ };
1043
+ }, {
1044
+ readonly mode: "context";
1045
+ readonly name: "verify_key";
1046
+ readonly description: "Read-only API key validation for the configured Warm account.";
1047
+ readonly annotations: {
1048
+ readonly readOnlyHint: true;
1049
+ readonly destructiveHint: false;
1050
+ readonly openWorldHint: false;
1051
+ };
1052
+ readonly input_schema: {
1053
+ readonly type: "object";
1054
+ readonly properties: {};
1055
+ readonly additionalProperties: false;
1056
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
1057
+ };
1058
+ readonly output_schema: {
1059
+ readonly type: "object";
1060
+ readonly properties: {
1061
+ readonly audience: {
1062
+ readonly type: "string";
1063
+ readonly enum: readonly ["automation", "context", "oauth"];
1064
+ };
1065
+ readonly status: {
1066
+ readonly type: "string";
1067
+ };
1068
+ readonly valid: {
1069
+ readonly type: "boolean";
1070
+ };
1071
+ };
1072
+ readonly required: readonly ["status", "valid"];
1073
+ readonly additionalProperties: false;
1074
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
1075
+ };
1076
+ }, {
1077
+ readonly mode: "automation";
1078
+ readonly name: "search_operations";
1079
+ readonly description: "Search the supported Warm operation catalog. Use this first to find the smallest matching operation.";
1080
+ readonly annotations: {
1081
+ readonly readOnlyHint: true;
1082
+ readonly destructiveHint: false;
1083
+ readonly openWorldHint: false;
1084
+ };
1085
+ readonly input_schema: {
1086
+ readonly type: "object";
1087
+ readonly properties: {
1088
+ readonly query: {
1089
+ readonly type: "string";
1090
+ readonly maxLength: 200;
1091
+ readonly description: "Words describing the action or data you need.";
1092
+ };
1093
+ };
1094
+ readonly additionalProperties: false;
1095
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
1096
+ };
1097
+ readonly output_schema: {
1098
+ readonly type: "object";
1099
+ readonly properties: {
1100
+ readonly operations: {
1101
+ readonly type: "array";
1102
+ readonly items: {
1103
+ readonly type: "object";
1104
+ readonly properties: {
1105
+ readonly confirmation_required: {
1106
+ readonly type: "boolean";
1107
+ };
1108
+ readonly description: {
1109
+ readonly type: "string";
1110
+ };
1111
+ readonly method: {
1112
+ readonly type: "string";
1113
+ readonly enum: readonly ["DELETE", "GET", "PATCH", "POST", "PUT"];
1114
+ };
1115
+ readonly operation_id: {
1116
+ readonly type: "string";
1117
+ };
1118
+ readonly path: {
1119
+ readonly type: "string";
1120
+ };
1121
+ readonly risk: {
1122
+ readonly type: "array";
1123
+ readonly items: {
1124
+ readonly type: "string";
1125
+ readonly enum: readonly ["read", "write", "destructive", "external_effect"];
1126
+ };
1127
+ };
1128
+ readonly summary: {
1129
+ readonly type: "string";
1130
+ };
1131
+ };
1132
+ readonly required: readonly ["confirmation_required", "description", "method", "operation_id", "path", "risk", "summary"];
1133
+ readonly additionalProperties: false;
1134
+ };
1135
+ };
1136
+ };
1137
+ readonly required: readonly ["operations"];
1138
+ readonly additionalProperties: false;
1139
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
1140
+ };
1141
+ }, {
1142
+ readonly mode: "automation";
1143
+ readonly name: "describe_operation";
1144
+ readonly 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.";
1145
+ readonly annotations: {
1146
+ readonly readOnlyHint: false;
1147
+ readonly destructiveHint: false;
1148
+ readonly openWorldHint: false;
1149
+ };
1150
+ readonly input_schema: {
1151
+ readonly type: "object";
1152
+ readonly properties: {
1153
+ readonly operation_id: {
1154
+ readonly type: "string";
1155
+ readonly minLength: 1;
1156
+ };
1157
+ readonly input: {
1158
+ readonly type: "object";
1159
+ readonly properties: {
1160
+ readonly body: {
1161
+ readonly type: "object";
1162
+ readonly additionalProperties: {};
1163
+ };
1164
+ readonly params: {
1165
+ readonly type: "object";
1166
+ readonly additionalProperties: {
1167
+ readonly type: "string";
1168
+ };
1169
+ };
1170
+ };
1171
+ readonly additionalProperties: false;
1172
+ readonly description: "Exact intended input. Required to obtain approval for a write operation.";
1173
+ };
1174
+ };
1175
+ readonly required: readonly ["operation_id"];
1176
+ readonly additionalProperties: false;
1177
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
1178
+ };
1179
+ readonly output_schema: {
1180
+ readonly type: "object";
1181
+ readonly properties: {
1182
+ readonly approval: {
1183
+ readonly type: "object";
1184
+ readonly properties: {
1185
+ readonly approval_url: {
1186
+ readonly type: "string";
1187
+ readonly format: "uri";
1188
+ };
1189
+ readonly expires_at: {
1190
+ readonly type: "string";
1191
+ readonly format: "date-time";
1192
+ };
1193
+ readonly id: {
1194
+ readonly type: "string";
1195
+ readonly minLength: 1;
1196
+ };
1197
+ readonly status: {
1198
+ readonly type: "string";
1199
+ readonly const: "pending";
1200
+ };
1201
+ };
1202
+ readonly required: readonly ["approval_url", "expires_at", "id", "status"];
1203
+ readonly additionalProperties: false;
1204
+ };
1205
+ readonly operation: {
1206
+ readonly type: "object";
1207
+ readonly properties: {
1208
+ readonly confirmation_required: {
1209
+ readonly type: "boolean";
1210
+ };
1211
+ readonly description: {
1212
+ readonly type: "string";
1213
+ };
1214
+ readonly method: {
1215
+ readonly type: "string";
1216
+ readonly enum: readonly ["DELETE", "GET", "PATCH", "POST", "PUT"];
1217
+ };
1218
+ readonly operation_id: {
1219
+ readonly type: "string";
1220
+ };
1221
+ readonly path: {
1222
+ readonly type: "string";
1223
+ };
1224
+ readonly risk: {
1225
+ readonly type: "array";
1226
+ readonly items: {
1227
+ readonly type: "string";
1228
+ readonly enum: readonly ["read", "write", "destructive", "external_effect"];
1229
+ };
1230
+ };
1231
+ readonly summary: {
1232
+ readonly type: "string";
1233
+ };
1234
+ readonly input_schema: {
1235
+ readonly type: "object";
1236
+ readonly additionalProperties: {};
1237
+ };
1238
+ };
1239
+ readonly required: readonly ["confirmation_required", "description", "method", "operation_id", "path", "risk", "summary", "input_schema"];
1240
+ readonly additionalProperties: false;
1241
+ };
1242
+ };
1243
+ readonly required: readonly ["operation"];
1244
+ readonly additionalProperties: false;
1245
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
1246
+ };
1247
+ }, {
1248
+ readonly mode: "automation";
1249
+ readonly name: "invoke_operation";
1250
+ readonly description: "Invoke one previously discovered Warm operation. Every write operation requires the approval_id returned for the exact same input by describe_operation.";
1251
+ readonly annotations: {
1252
+ readonly readOnlyHint: false;
1253
+ readonly destructiveHint: true;
1254
+ readonly openWorldHint: false;
1255
+ };
1256
+ readonly input_schema: {
1257
+ readonly type: "object";
1258
+ readonly properties: {
1259
+ readonly operation_id: {
1260
+ readonly type: "string";
1261
+ readonly minLength: 1;
1262
+ };
1263
+ readonly input: {
1264
+ readonly type: "object";
1265
+ readonly properties: {
1266
+ readonly body: {
1267
+ readonly type: "object";
1268
+ readonly additionalProperties: {};
1269
+ };
1270
+ readonly params: {
1271
+ readonly type: "object";
1272
+ readonly additionalProperties: {
1273
+ readonly type: "string";
1274
+ };
1275
+ };
1276
+ };
1277
+ readonly additionalProperties: false;
1278
+ readonly description: "Exact intended input. Required to obtain approval for a write operation.";
1279
+ };
1280
+ readonly approval_id: {
1281
+ readonly type: "string";
1282
+ readonly format: "uuid";
1283
+ readonly description: "Approval ID returned by describe_operation for the exact write input.";
1284
+ };
1285
+ };
1286
+ readonly required: readonly ["operation_id"];
1287
+ readonly additionalProperties: false;
1288
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
1289
+ };
1290
+ readonly output_schema: {
1291
+ readonly type: "object";
1292
+ readonly properties: {
1293
+ readonly body: {};
1294
+ readonly headers: {
1295
+ readonly type: "object";
1296
+ readonly additionalProperties: {
1297
+ readonly type: "string";
1298
+ };
1299
+ };
1300
+ readonly operation_id: {
1301
+ readonly type: "string";
1302
+ };
1303
+ readonly status: {
1304
+ readonly type: "integer";
1305
+ };
1306
+ };
1307
+ readonly required: readonly ["headers", "operation_id", "status"];
1308
+ readonly additionalProperties: false;
1309
+ readonly $schema: "https://json-schema.org/draft-07/schema#";
1310
+ };
1311
+ }];
1312
+ };
1313
+ readonly product: {
1314
+ readonly capabilities: readonly {
1315
+ id: import("./product.js").ProductCapabilityId;
1316
+ label: string;
1317
+ tiers: readonly import("./product.js").PublicProductTier[];
1318
+ }[];
1319
+ readonly tiers: readonly ["plus", "pro"];
1320
+ };
1321
+ readonly protectedCrawlerPaths: readonly ["/dashboard", "/transactions", "/accounts", "/assets", "/subscriptions", "/spending", "/income", "/cash-flow", "/budgets", "/benefits", "/goals", "/planning", "/alerts", "/tag-rules", "/more", "/settings", "/feedback", "/billing", "/logs", "/join", "/welcome", "/welcome/connect", "/welcome/complete", "/welcome/sync", "/dashboard-1", "/dashboard-2", "/dashboard-3", "/insights", "/ksink", "/snapshots"];
1322
+ readonly publicDiscovery: {
1323
+ readonly protocolVersion: '2025-06-18';
1324
+ readonly serverInfo: {
1325
+ readonly name: 'warm-public-tools';
1326
+ readonly title: 'Warm Public Discovery Tools';
1327
+ readonly version: '1.0.0';
1328
+ };
1329
+ readonly paths: {
1330
+ readonly developers: "/developers";
1331
+ readonly endpoint: "/mcp";
1332
+ readonly openapi: "/openapi.yaml";
1333
+ readonly verify: "/api/verify";
1334
+ };
1335
+ readonly tools: readonly [{
1336
+ readonly annotations: {
1337
+ readonly readOnlyHint: true;
1338
+ };
1339
+ readonly description: 'Return Warm API discovery URLs and the current API catalog document.';
1340
+ readonly inputSchema: {
1341
+ type: string;
1342
+ properties: {};
1343
+ additionalProperties: boolean;
1344
+ };
1345
+ readonly name: 'warm-get-api-catalog';
1346
+ readonly outputSchema: {
1347
+ readonly type: 'object';
1348
+ readonly properties: {
1349
+ readonly apiCatalogUrl: {
1350
+ readonly type: 'string';
1351
+ };
1352
+ readonly payload: {
1353
+ readonly type: 'object';
1354
+ };
1355
+ };
1356
+ readonly required: readonly ['apiCatalogUrl', 'payload'];
1357
+ readonly additionalProperties: false;
1358
+ };
1359
+ readonly title: 'Warm API Catalog';
1360
+ }, {
1361
+ readonly annotations: {
1362
+ readonly readOnlyHint: true;
1363
+ };
1364
+ readonly description: 'Return the Warm OpenAPI document URL and companion documentation URLs.';
1365
+ readonly inputSchema: {
1366
+ type: string;
1367
+ properties: {};
1368
+ additionalProperties: boolean;
1369
+ };
1370
+ readonly name: 'warm-get-openapi';
1371
+ readonly outputSchema: {
1372
+ readonly type: 'object';
1373
+ readonly properties: {
1374
+ readonly apiCatalogUrl: {
1375
+ readonly type: 'string';
1376
+ };
1377
+ readonly documentationUrl: {
1378
+ readonly type: 'string';
1379
+ };
1380
+ readonly openapiUrl: {
1381
+ readonly type: 'string';
1382
+ };
1383
+ };
1384
+ readonly required: readonly ['apiCatalogUrl', 'documentationUrl', 'openapiUrl'];
1385
+ readonly additionalProperties: false;
1386
+ };
1387
+ readonly title: 'Warm OpenAPI';
1388
+ }, {
1389
+ readonly annotations: {
1390
+ readonly readOnlyHint: true;
1391
+ };
1392
+ readonly description: 'Fetch the current Warm public API verification payload from /api/verify.';
1393
+ readonly inputSchema: {
1394
+ type: string;
1395
+ properties: {};
1396
+ additionalProperties: boolean;
1397
+ };
1398
+ readonly name: 'warm-get-service-status';
1399
+ readonly outputSchema: {
1400
+ readonly type: 'object';
1401
+ readonly properties: {
1402
+ readonly ok: {
1403
+ readonly type: 'boolean';
1404
+ };
1405
+ readonly payload: {};
1406
+ readonly error: {
1407
+ readonly type: 'object';
1408
+ readonly properties: {
1409
+ readonly code: {
1410
+ readonly type: 'string';
1411
+ readonly enum: readonly ['VERIFY_TIMEOUT', 'VERIFY_NON_JSON', 'VERIFY_UNAVAILABLE'];
1412
+ };
1413
+ readonly message: {
1414
+ readonly type: 'string';
1415
+ };
1416
+ };
1417
+ readonly required: readonly ['code', 'message'];
1418
+ readonly additionalProperties: false;
1419
+ };
1420
+ readonly status: {
1421
+ readonly type: 'number';
1422
+ readonly minimum: 0;
1423
+ };
1424
+ readonly statusUrl: {
1425
+ readonly type: 'string';
1426
+ };
1427
+ };
1428
+ readonly required: readonly ['ok', 'status', 'statusUrl'];
1429
+ readonly additionalProperties: false;
1430
+ };
1431
+ readonly title: 'Warm API Verification';
1432
+ }];
1433
+ };
1434
+ };
1435
+ /** Canonical key-sorted JSON derived from the executed manifest values. */
1436
+ export declare const contractReleaseManifestCanonicalJson: string;
4
1437
  //# sourceMappingURL=manifest.d.ts.map