machine-bridge-mcp 0.16.2 → 0.17.1

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 (41) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/CONTRIBUTING.md +14 -0
  3. package/README.md +11 -1
  4. package/SECURITY.md +9 -1
  5. package/browser-extension/manifest.json +2 -2
  6. package/browser-extension/service-worker.js +52 -29
  7. package/docs/ARCHITECTURE.md +4 -2
  8. package/docs/CLIENTS.md +2 -0
  9. package/docs/ENGINEERING.md +3 -1
  10. package/docs/GETTING_STARTED.md +400 -0
  11. package/docs/MULTI_ACCOUNT.md +406 -0
  12. package/docs/PROJECT_STANDARDS.md +143 -0
  13. package/docs/RELEASING.md +12 -0
  14. package/docs/TESTING.md +7 -5
  15. package/docs/TOOL_REFERENCE.md +2836 -0
  16. package/package.json +13 -4
  17. package/scripts/commit-message-check.mjs +63 -0
  18. package/scripts/coverage-check.mjs +9 -1
  19. package/scripts/generate-policy-reference.mjs +1 -4
  20. package/scripts/generate-tool-reference.mjs +87 -0
  21. package/scripts/generate-worker-types.mjs +19 -0
  22. package/scripts/markdown.mjs +9 -0
  23. package/src/local/agent-context.mjs +8 -15
  24. package/src/local/cli.mjs +1 -107
  25. package/src/local/daemon-process.mjs +16 -4
  26. package/src/local/default-instructions.mjs +2 -45
  27. package/src/local/git-service.mjs +4 -9
  28. package/src/local/managed-job-plan.mjs +2 -7
  29. package/src/local/managed-jobs.mjs +2 -7
  30. package/src/local/numbers.mjs +9 -0
  31. package/src/local/process-execution.mjs +4 -9
  32. package/src/local/process-sessions.mjs +5 -10
  33. package/src/local/project-metadata.mjs +50 -0
  34. package/src/local/project-package.mjs +2 -45
  35. package/src/local/records.mjs +5 -0
  36. package/src/local/runtime.mjs +5 -12
  37. package/src/local/state-inventory.mjs +139 -0
  38. package/src/local/workspace-file-service.mjs +6 -12
  39. package/src/worker/index.ts +33 -17
  40. package/tsconfig.json +1 -1
  41. package/src/worker/worker-configuration.d.ts +0 -14716
@@ -0,0 +1,2836 @@
1
+ # MCP tool reference
2
+
3
+ > Generated from `src/shared/tool-catalog.json`. Do not edit this file manually.
4
+
5
+ This catalog is the authoritative public tool contract for names, availability classes, behavior annotations, and JSON input schemas. Runtime authorization is additionally determined by the active policy described in [POLICY_REFERENCE.md](POLICY_REFERENCE.md).
6
+
7
+ Tool count: **51**.
8
+
9
+ ## Index
10
+
11
+ | Tool | Availability | Read only | Destructive | Idempotent | Open world |
12
+ |---|---|---:|---:|---:|---:|
13
+ | [`server_info`](#server_info) | `always` | yes | no | yes | no |
14
+ | [`project_overview`](#project_overview) | `always` | yes | no | yes | no |
15
+ | [`session_bootstrap`](#session_bootstrap) | `always` | yes | no | yes | no |
16
+ | [`resolve_task_capabilities`](#resolve_task_capabilities) | `always` | yes | no | yes | no |
17
+ | [`list_local_applications`](#list_local_applications) | `full` | yes | no | yes | yes |
18
+ | [`open_local_application`](#open_local_application) | `full` | no | no | no | yes |
19
+ | [`inspect_local_application`](#inspect_local_application) | `full` | yes | no | yes | yes |
20
+ | [`operate_local_application`](#operate_local_application) | `full` | no | yes | no | yes |
21
+ | [`browser_status`](#browser_status) | `full` | no | no | yes | yes |
22
+ | [`pair_browser_extension`](#pair_browser_extension) | `full` | no | no | no | yes |
23
+ | [`browser_list_tabs`](#browser_list_tabs) | `full` | yes | no | yes | yes |
24
+ | [`browser_manage_tabs`](#browser_manage_tabs) | `full` | no | yes | no | yes |
25
+ | [`browser_get_source`](#browser_get_source) | `full` | yes | no | yes | yes |
26
+ | [`browser_inspect_page`](#browser_inspect_page) | `full` | yes | no | yes | yes |
27
+ | [`browser_wait`](#browser_wait) | `full` | yes | no | yes | yes |
28
+ | [`browser_action`](#browser_action) | `full` | no | yes | no | yes |
29
+ | [`browser_fill_form`](#browser_fill_form) | `full` | no | yes | no | yes |
30
+ | [`browser_screenshot`](#browser_screenshot) | `full` | no | no | no | yes |
31
+ | [`browser_upload_files`](#browser_upload_files) | `full` | no | yes | no | yes |
32
+ | [`agent_context`](#agent_context) | `always` | yes | no | yes | no |
33
+ | [`list_local_skills`](#list_local_skills) | `always` | yes | no | yes | no |
34
+ | [`load_local_skill`](#load_local_skill) | `always` | yes | no | yes | no |
35
+ | [`list_local_commands`](#list_local_commands) | `always` | yes | no | yes | no |
36
+ | [`run_local_command`](#run_local_command) | `direct-exec` | no | yes | no | yes |
37
+ | [`list_roots`](#list_roots) | `always` | yes | no | yes | no |
38
+ | [`list_dir`](#list_dir) | `always` | yes | no | yes | no |
39
+ | [`list_files`](#list_files) | `always` | yes | no | yes | no |
40
+ | [`read_file`](#read_file) | `always` | yes | no | yes | no |
41
+ | [`view_image`](#view_image) | `always` | yes | no | yes | no |
42
+ | [`write_file`](#write_file) | `write` | no | yes | no | no |
43
+ | [`edit_file`](#edit_file) | `write` | no | yes | no | no |
44
+ | [`apply_patch`](#apply_patch) | `write` | no | yes | no | no |
45
+ | [`search_text`](#search_text) | `always` | yes | no | yes | no |
46
+ | [`git_status`](#git_status) | `always` | yes | no | yes | no |
47
+ | [`git_diff`](#git_diff) | `always` | yes | no | yes | no |
48
+ | [`git_log`](#git_log) | `always` | yes | no | yes | no |
49
+ | [`git_show`](#git_show) | `always` | yes | no | yes | no |
50
+ | [`run_process`](#run_process) | `direct-exec` | no | yes | no | yes |
51
+ | [`start_process`](#start_process) | `direct-exec` | no | yes | no | yes |
52
+ | [`read_process`](#read_process) | `direct-exec` | yes | no | yes | no |
53
+ | [`write_process`](#write_process) | `direct-exec` | no | yes | no | yes |
54
+ | [`kill_process`](#kill_process) | `direct-exec` | no | yes | yes | yes |
55
+ | [`diagnose_runtime`](#diagnose_runtime) | `always` | yes | no | yes | no |
56
+ | [`list_local_resources`](#list_local_resources) | `always` | yes | no | yes | no |
57
+ | [`generate_ssh_key_resource`](#generate_ssh_key_resource) | `full` | no | no | yes | no |
58
+ | [`stage_job`](#stage_job) | `write` | no | no | no | no |
59
+ | [`start_job`](#start_job) | `write+direct-exec` | no | yes | no | yes |
60
+ | [`list_jobs`](#list_jobs) | `always` | yes | no | yes | no |
61
+ | [`read_job`](#read_job) | `always` | yes | no | yes | no |
62
+ | [`cancel_job`](#cancel_job) | `write` | no | yes | yes | yes |
63
+ | [`exec_command`](#exec_command) | `shell-exec` | no | yes | no | yes |
64
+
65
+ ## `server_info`
66
+
67
+ **Server information**
68
+
69
+ Return bridge/runtime metadata, active policy, protocol versions, and available tools.
70
+
71
+ | Contract field | Value |
72
+ |---|---|
73
+ | Availability | `always` |
74
+ | Read-only hint | yes |
75
+ | Destructive hint | no |
76
+ | Idempotent hint | yes |
77
+ | Open-world hint | no |
78
+
79
+ ### Input schema
80
+
81
+ ```json
82
+ {
83
+ "type": "object",
84
+ "additionalProperties": false
85
+ }
86
+ ```
87
+
88
+ ## `project_overview`
89
+
90
+ **Project overview**
91
+
92
+ Summarize the connected workspace, repository root, local policy, and top-level entries.
93
+
94
+ | Contract field | Value |
95
+ |---|---|
96
+ | Availability | `always` |
97
+ | Read-only hint | yes |
98
+ | Destructive hint | no |
99
+ | Idempotent hint | yes |
100
+ | Open-world hint | no |
101
+
102
+ ### Input schema
103
+
104
+ ```json
105
+ {
106
+ "type": "object",
107
+ "additionalProperties": false
108
+ }
109
+ ```
110
+
111
+ ## `session_bootstrap`
112
+
113
+ **Load session bootstrap**
114
+
115
+ Load built-in working agreements, bounded automatic project facts, user-global and root workspace instructions, and capability refresh metadata for MCP session initialization.
116
+
117
+ | Contract field | Value |
118
+ |---|---|
119
+ | Availability | `always` |
120
+ | Read-only hint | yes |
121
+ | Destructive hint | no |
122
+ | Idempotent hint | yes |
123
+ | Open-world hint | no |
124
+
125
+ ### Input schema
126
+
127
+ ```json
128
+ {
129
+ "type": "object",
130
+ "additionalProperties": false,
131
+ "properties": {
132
+ "path": {
133
+ "type": "string",
134
+ "default": ".",
135
+ "maxLength": 32768
136
+ }
137
+ }
138
+ }
139
+ ```
140
+
141
+ ## `resolve_task_capabilities`
142
+
143
+ **Resolve task capabilities**
144
+
145
+ Rescan built-in and automatic project context, local instruction files, skills, explicit and automatic package commands, installed applications, and browser capability metadata; rank the capabilities relevant to the current task and optionally load the best skill.
146
+
147
+ | Contract field | Value |
148
+ |---|---|
149
+ | Availability | `always` |
150
+ | Read-only hint | yes |
151
+ | Destructive hint | no |
152
+ | Idempotent hint | yes |
153
+ | Open-world hint | no |
154
+
155
+ ### Input schema
156
+
157
+ ```json
158
+ {
159
+ "type": "object",
160
+ "additionalProperties": false,
161
+ "properties": {
162
+ "task": {
163
+ "type": "string",
164
+ "minLength": 1,
165
+ "maxLength": 20000
166
+ },
167
+ "path": {
168
+ "type": "string",
169
+ "default": ".",
170
+ "maxLength": 32768
171
+ },
172
+ "max_skills": {
173
+ "type": "integer",
174
+ "minimum": 1,
175
+ "maximum": 50,
176
+ "default": 10
177
+ },
178
+ "include_selected_skill": {
179
+ "type": "boolean",
180
+ "default": true
181
+ }
182
+ },
183
+ "required": [
184
+ "task"
185
+ ]
186
+ }
187
+ ```
188
+
189
+ ## `list_local_applications`
190
+
191
+ **List local applications**
192
+
193
+ Discover installed local applications and launchers without reading their document contents.
194
+
195
+ | Contract field | Value |
196
+ |---|---|
197
+ | Availability | `full` |
198
+ | Read-only hint | yes |
199
+ | Destructive hint | no |
200
+ | Idempotent hint | yes |
201
+ | Open-world hint | yes |
202
+
203
+ ### Input schema
204
+
205
+ ```json
206
+ {
207
+ "type": "object",
208
+ "additionalProperties": false,
209
+ "properties": {
210
+ "query": {
211
+ "type": "string",
212
+ "default": "",
213
+ "maxLength": 1000
214
+ },
215
+ "max_results": {
216
+ "type": "integer",
217
+ "minimum": 1,
218
+ "maximum": 1000,
219
+ "default": 200
220
+ }
221
+ }
222
+ }
223
+ ```
224
+
225
+ ## `open_local_application`
226
+
227
+ **Open local application**
228
+
229
+ Open a named local application, optionally with a document or URL target, using the operating system launcher.
230
+
231
+ | Contract field | Value |
232
+ |---|---|
233
+ | Availability | `full` |
234
+ | Read-only hint | no |
235
+ | Destructive hint | no |
236
+ | Idempotent hint | no |
237
+ | Open-world hint | yes |
238
+
239
+ ### Input schema
240
+
241
+ ```json
242
+ {
243
+ "type": "object",
244
+ "additionalProperties": false,
245
+ "properties": {
246
+ "application": {
247
+ "type": "string",
248
+ "minLength": 1,
249
+ "maxLength": 300
250
+ },
251
+ "target": {
252
+ "type": "string",
253
+ "maxLength": 32768
254
+ },
255
+ "background": {
256
+ "type": "boolean",
257
+ "default": false
258
+ },
259
+ "timeout_seconds": {
260
+ "type": "integer",
261
+ "minimum": 1,
262
+ "maximum": 120,
263
+ "default": 30
264
+ }
265
+ },
266
+ "required": [
267
+ "application"
268
+ ]
269
+ }
270
+ ```
271
+
272
+ ## `inspect_local_application`
273
+
274
+ **Inspect local application UI**
275
+
276
+ Inspect a bounded macOS Accessibility tree for a running application. Requires local Accessibility permission and never executes arbitrary AppleScript supplied by the caller.
277
+
278
+ | Contract field | Value |
279
+ |---|---|
280
+ | Availability | `full` |
281
+ | Read-only hint | yes |
282
+ | Destructive hint | no |
283
+ | Idempotent hint | yes |
284
+ | Open-world hint | yes |
285
+
286
+ ### Input schema
287
+
288
+ ```json
289
+ {
290
+ "type": "object",
291
+ "additionalProperties": false,
292
+ "properties": {
293
+ "application": {
294
+ "type": "string",
295
+ "minLength": 1,
296
+ "maxLength": 300
297
+ },
298
+ "max_depth": {
299
+ "type": "integer",
300
+ "minimum": 1,
301
+ "maximum": 12,
302
+ "default": 6
303
+ },
304
+ "max_elements": {
305
+ "type": "integer",
306
+ "minimum": 1,
307
+ "maximum": 500,
308
+ "default": 200
309
+ },
310
+ "include_values": {
311
+ "type": "boolean",
312
+ "default": false
313
+ },
314
+ "include_menus": {
315
+ "type": "boolean",
316
+ "default": false,
317
+ "description": "Include and recursively inspect the application menu hierarchy. Disabled by default so main-window controls are reached quickly."
318
+ },
319
+ "timeout_seconds": {
320
+ "type": "integer",
321
+ "minimum": 1,
322
+ "maximum": 120,
323
+ "default": 30
324
+ }
325
+ },
326
+ "required": [
327
+ "application"
328
+ ]
329
+ }
330
+ ```
331
+
332
+ ## `operate_local_application`
333
+
334
+ **Operate local application UI**
335
+
336
+ Perform a structured macOS Accessibility action on a matched UI element. Text can be supplied through a registered local resource so secret values do not enter MCP arguments.
337
+
338
+ | Contract field | Value |
339
+ |---|---|
340
+ | Availability | `full` |
341
+ | Read-only hint | no |
342
+ | Destructive hint | yes |
343
+ | Idempotent hint | no |
344
+ | Open-world hint | yes |
345
+
346
+ ### Input schema
347
+
348
+ ```json
349
+ {
350
+ "type": "object",
351
+ "additionalProperties": false,
352
+ "properties": {
353
+ "application": {
354
+ "type": "string",
355
+ "minLength": 1,
356
+ "maxLength": 300
357
+ },
358
+ "action": {
359
+ "type": "string",
360
+ "enum": [
361
+ "activate",
362
+ "click",
363
+ "set_value",
364
+ "focus",
365
+ "press",
366
+ "keystroke"
367
+ ]
368
+ },
369
+ "selector": {
370
+ "type": "object",
371
+ "properties": {
372
+ "role": {
373
+ "type": "string",
374
+ "maxLength": 500
375
+ },
376
+ "subrole": {
377
+ "type": "string",
378
+ "maxLength": 500
379
+ },
380
+ "name": {
381
+ "type": "string",
382
+ "maxLength": 500
383
+ },
384
+ "title": {
385
+ "type": "string",
386
+ "maxLength": 500
387
+ },
388
+ "description": {
389
+ "type": "string",
390
+ "maxLength": 500
391
+ },
392
+ "identifier": {
393
+ "type": "string",
394
+ "maxLength": 500
395
+ },
396
+ "index": {
397
+ "type": "integer",
398
+ "minimum": 0,
399
+ "maximum": 499
400
+ }
401
+ },
402
+ "additionalProperties": false
403
+ },
404
+ "value": {
405
+ "type": "string",
406
+ "maxLength": 4000
407
+ },
408
+ "value_resource": {
409
+ "type": "string",
410
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
411
+ },
412
+ "include_menus": {
413
+ "type": "boolean",
414
+ "default": false,
415
+ "description": "Include menu-bar and menu subtrees when matching the action selector."
416
+ },
417
+ "max_depth": {
418
+ "type": "integer",
419
+ "minimum": 1,
420
+ "maximum": 12,
421
+ "default": 8
422
+ },
423
+ "timeout_seconds": {
424
+ "type": "integer",
425
+ "minimum": 1,
426
+ "maximum": 120,
427
+ "default": 30
428
+ }
429
+ },
430
+ "required": [
431
+ "application",
432
+ "action"
433
+ ]
434
+ }
435
+ ```
436
+
437
+ ## `browser_status`
438
+
439
+ **Browser bridge status**
440
+
441
+ Start or inspect the loopback bridge for the Chromium profile where the extension is installed. Machine Bridge does not launch Playwright or another browser process, but cannot infer whether that profile is the user's daily or isolated profile; status reports authenticated extension version, protocol, capabilities, and reload state.
442
+
443
+ | Contract field | Value |
444
+ |---|---|
445
+ | Availability | `full` |
446
+ | Read-only hint | no |
447
+ | Destructive hint | no |
448
+ | Idempotent hint | yes |
449
+ | Open-world hint | yes |
450
+
451
+ ### Input schema
452
+
453
+ ```json
454
+ {
455
+ "type": "object",
456
+ "additionalProperties": false
457
+ }
458
+ ```
459
+
460
+ ## `pair_browser_extension`
461
+
462
+ **Pair browser extension**
463
+
464
+ Open the local pairing page and return the packaged unpacked-extension path for installation in the user's intended Chromium profile. Pairing is persisted only after an acknowledged version/capability handshake.
465
+
466
+ | Contract field | Value |
467
+ |---|---|
468
+ | Availability | `full` |
469
+ | Read-only hint | no |
470
+ | Destructive hint | no |
471
+ | Idempotent hint | no |
472
+ | Open-world hint | yes |
473
+
474
+ ### Input schema
475
+
476
+ ```json
477
+ {
478
+ "type": "object",
479
+ "additionalProperties": false,
480
+ "properties": {
481
+ "open": {
482
+ "type": "boolean",
483
+ "default": true
484
+ }
485
+ }
486
+ }
487
+ ```
488
+
489
+ ## `browser_list_tabs`
490
+
491
+ **List browser tabs**
492
+
493
+ List tabs from the paired user's existing Chromium browser profile.
494
+
495
+ | Contract field | Value |
496
+ |---|---|
497
+ | Availability | `full` |
498
+ | Read-only hint | yes |
499
+ | Destructive hint | no |
500
+ | Idempotent hint | yes |
501
+ | Open-world hint | yes |
502
+
503
+ ### Input schema
504
+
505
+ ```json
506
+ {
507
+ "type": "object",
508
+ "additionalProperties": false,
509
+ "properties": {
510
+ "current_window": {
511
+ "type": "boolean",
512
+ "default": false
513
+ },
514
+ "include_pinned": {
515
+ "type": "boolean",
516
+ "default": true
517
+ },
518
+ "timeout_seconds": {
519
+ "type": "integer",
520
+ "minimum": 1,
521
+ "maximum": 120,
522
+ "default": 30
523
+ }
524
+ }
525
+ }
526
+ ```
527
+
528
+ ## `browser_manage_tabs`
529
+
530
+ **Manage browser tabs**
531
+
532
+ Create, activate, or close tabs in the paired existing browser profile.
533
+
534
+ | Contract field | Value |
535
+ |---|---|
536
+ | Availability | `full` |
537
+ | Read-only hint | no |
538
+ | Destructive hint | yes |
539
+ | Idempotent hint | no |
540
+ | Open-world hint | yes |
541
+
542
+ ### Input schema
543
+
544
+ ```json
545
+ {
546
+ "type": "object",
547
+ "additionalProperties": false,
548
+ "properties": {
549
+ "action": {
550
+ "type": "string",
551
+ "enum": [
552
+ "new",
553
+ "activate",
554
+ "close"
555
+ ]
556
+ },
557
+ "tab_id": {
558
+ "type": "integer",
559
+ "minimum": 1,
560
+ "description": "Required for activate and close."
561
+ },
562
+ "url": {
563
+ "type": "string",
564
+ "maxLength": 32768,
565
+ "description": "Optional absolute http, https, or file URL for a new tab."
566
+ },
567
+ "active": {
568
+ "type": "boolean",
569
+ "default": true
570
+ },
571
+ "timeout_seconds": {
572
+ "type": "integer",
573
+ "minimum": 1,
574
+ "maximum": 120,
575
+ "default": 30
576
+ }
577
+ },
578
+ "required": [
579
+ "action"
580
+ ]
581
+ }
582
+ ```
583
+
584
+ ## `browser_get_source`
585
+
586
+ **Read browser page source**
587
+
588
+ Read bounded serialized current DOM HTML from the active or selected browser tab. max_bytes is one aggregate budget across at most 64 accessible frames, with explicit frame, node, and byte truncation metadata.
589
+
590
+ | Contract field | Value |
591
+ |---|---|
592
+ | Availability | `full` |
593
+ | Read-only hint | yes |
594
+ | Destructive hint | no |
595
+ | Idempotent hint | yes |
596
+ | Open-world hint | yes |
597
+
598
+ ### Input schema
599
+
600
+ ```json
601
+ {
602
+ "type": "object",
603
+ "additionalProperties": false,
604
+ "properties": {
605
+ "tab_id": {
606
+ "type": "integer",
607
+ "minimum": 1
608
+ },
609
+ "max_bytes": {
610
+ "type": "integer",
611
+ "minimum": 1,
612
+ "maximum": 4194304,
613
+ "default": 1048576
614
+ },
615
+ "timeout_seconds": {
616
+ "type": "integer",
617
+ "minimum": 1,
618
+ "maximum": 120,
619
+ "default": 30
620
+ },
621
+ "frame_id": {
622
+ "type": "integer",
623
+ "minimum": 0
624
+ },
625
+ "all_frames": {
626
+ "type": "boolean",
627
+ "default": false
628
+ }
629
+ }
630
+ }
631
+ ```
632
+
633
+ ## `browser_inspect_page`
634
+
635
+ **Inspect browser page**
636
+
637
+ Inspect a bounded snapshot-version-2 semantic representation across at most 64 accessible frames, with one aggregate element budget, bounded reusable refs, actionability state, bounded page-controlled metadata, and explicit scan/frame truncation.
638
+
639
+ | Contract field | Value |
640
+ |---|---|
641
+ | Availability | `full` |
642
+ | Read-only hint | yes |
643
+ | Destructive hint | no |
644
+ | Idempotent hint | yes |
645
+ | Open-world hint | yes |
646
+
647
+ ### Input schema
648
+
649
+ ```json
650
+ {
651
+ "type": "object",
652
+ "additionalProperties": false,
653
+ "properties": {
654
+ "tab_id": {
655
+ "type": "integer",
656
+ "minimum": 1
657
+ },
658
+ "max_elements": {
659
+ "type": "integer",
660
+ "minimum": 1,
661
+ "maximum": 1000,
662
+ "default": 300
663
+ },
664
+ "include_values": {
665
+ "type": "boolean",
666
+ "default": false
667
+ },
668
+ "timeout_seconds": {
669
+ "type": "integer",
670
+ "minimum": 1,
671
+ "maximum": 120,
672
+ "default": 30
673
+ },
674
+ "frame_id": {
675
+ "type": "integer",
676
+ "minimum": 0
677
+ },
678
+ "all_frames": {
679
+ "type": "boolean",
680
+ "default": true
681
+ }
682
+ }
683
+ }
684
+ ```
685
+
686
+ ## `browser_wait`
687
+
688
+ **Wait for browser state**
689
+
690
+ Wait until all supplied URL, load, text, and element-state conditions are satisfied in an existing browser tab.
691
+
692
+ | Contract field | Value |
693
+ |---|---|
694
+ | Availability | `full` |
695
+ | Read-only hint | yes |
696
+ | Destructive hint | no |
697
+ | Idempotent hint | yes |
698
+ | Open-world hint | yes |
699
+
700
+ ### Input schema
701
+
702
+ ```json
703
+ {
704
+ "type": "object",
705
+ "additionalProperties": false,
706
+ "properties": {
707
+ "tab_id": {
708
+ "type": "integer",
709
+ "minimum": 1
710
+ },
711
+ "frame_id": {
712
+ "type": "integer",
713
+ "minimum": 0
714
+ },
715
+ "selector": {
716
+ "type": "object",
717
+ "properties": {
718
+ "ref": {
719
+ "type": "string",
720
+ "maxLength": 100,
721
+ "description": "Stable element reference returned by browser_inspect_page for the same document and frame."
722
+ },
723
+ "css": {
724
+ "type": "string",
725
+ "maxLength": 2000
726
+ },
727
+ "id": {
728
+ "type": "string",
729
+ "maxLength": 2000
730
+ },
731
+ "name": {
732
+ "type": "string",
733
+ "maxLength": 2000
734
+ },
735
+ "label": {
736
+ "type": "string",
737
+ "maxLength": 2000
738
+ },
739
+ "text": {
740
+ "type": "string",
741
+ "maxLength": 2000
742
+ },
743
+ "role": {
744
+ "type": "string",
745
+ "maxLength": 2000
746
+ },
747
+ "placeholder": {
748
+ "type": "string",
749
+ "maxLength": 2000
750
+ },
751
+ "index": {
752
+ "type": "integer",
753
+ "minimum": 0,
754
+ "maximum": 10000
755
+ }
756
+ },
757
+ "additionalProperties": false
758
+ },
759
+ "state": {
760
+ "type": "string",
761
+ "enum": [
762
+ "attached",
763
+ "detached",
764
+ "visible",
765
+ "hidden",
766
+ "enabled",
767
+ "editable",
768
+ "checked",
769
+ "unchecked"
770
+ ],
771
+ "description": "Element state to wait for. Defaults to visible only when selector is supplied."
772
+ },
773
+ "text": {
774
+ "type": "string",
775
+ "maxLength": 4000
776
+ },
777
+ "url_contains": {
778
+ "type": "string",
779
+ "maxLength": 32768
780
+ },
781
+ "load_state": {
782
+ "type": "string",
783
+ "enum": [
784
+ "domcontentloaded",
785
+ "complete"
786
+ ]
787
+ },
788
+ "timeout_seconds": {
789
+ "type": "integer",
790
+ "minimum": 1,
791
+ "maximum": 120,
792
+ "default": 30
793
+ }
794
+ }
795
+ }
796
+ ```
797
+
798
+ ## `browser_action`
799
+
800
+ **Operate browser page**
801
+
802
+ Perform one structured navigation or page action in the user's existing browser tab without arbitrary JavaScript. Automatic trusted-input fallback occurs only before any DevTools Input command starts; ambiguous post-dispatch failures require inspection before retry.
803
+
804
+ | Contract field | Value |
805
+ |---|---|
806
+ | Availability | `full` |
807
+ | Read-only hint | no |
808
+ | Destructive hint | yes |
809
+ | Idempotent hint | no |
810
+ | Open-world hint | yes |
811
+
812
+ ### Input schema
813
+
814
+ ```json
815
+ {
816
+ "type": "object",
817
+ "additionalProperties": false,
818
+ "properties": {
819
+ "tab_id": {
820
+ "type": "integer",
821
+ "minimum": 1
822
+ },
823
+ "action": {
824
+ "type": "string",
825
+ "enum": [
826
+ "navigate",
827
+ "click",
828
+ "fill",
829
+ "select",
830
+ "check",
831
+ "uncheck",
832
+ "focus",
833
+ "press",
834
+ "submit",
835
+ "reload",
836
+ "back",
837
+ "forward",
838
+ "double_click",
839
+ "hover",
840
+ "type_text",
841
+ "scroll_into_view"
842
+ ]
843
+ },
844
+ "selector": {
845
+ "type": "object",
846
+ "properties": {
847
+ "ref": {
848
+ "type": "string",
849
+ "maxLength": 100,
850
+ "description": "Stable element reference returned by browser_inspect_page for the same document and frame."
851
+ },
852
+ "css": {
853
+ "type": "string",
854
+ "maxLength": 2000
855
+ },
856
+ "id": {
857
+ "type": "string",
858
+ "maxLength": 2000
859
+ },
860
+ "name": {
861
+ "type": "string",
862
+ "maxLength": 2000
863
+ },
864
+ "label": {
865
+ "type": "string",
866
+ "maxLength": 2000
867
+ },
868
+ "text": {
869
+ "type": "string",
870
+ "maxLength": 2000
871
+ },
872
+ "role": {
873
+ "type": "string",
874
+ "maxLength": 2000
875
+ },
876
+ "placeholder": {
877
+ "type": "string",
878
+ "maxLength": 2000
879
+ },
880
+ "index": {
881
+ "type": "integer",
882
+ "minimum": 0,
883
+ "maximum": 10000
884
+ }
885
+ },
886
+ "additionalProperties": false
887
+ },
888
+ "url": {
889
+ "type": "string",
890
+ "maxLength": 32768
891
+ },
892
+ "value": {
893
+ "type": "string",
894
+ "maxLength": 131072
895
+ },
896
+ "value_resource": {
897
+ "type": "string",
898
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
899
+ },
900
+ "key": {
901
+ "type": "string",
902
+ "maxLength": 100
903
+ },
904
+ "wait_for": {
905
+ "type": "string",
906
+ "enum": [
907
+ "none",
908
+ "domcontentloaded",
909
+ "complete"
910
+ ],
911
+ "default": "none"
912
+ },
913
+ "timeout_seconds": {
914
+ "type": "integer",
915
+ "minimum": 1,
916
+ "maximum": 120,
917
+ "default": 30
918
+ },
919
+ "frame_id": {
920
+ "type": "integer",
921
+ "minimum": 0
922
+ },
923
+ "input_mode": {
924
+ "type": "string",
925
+ "enum": [
926
+ "auto",
927
+ "trusted",
928
+ "dom"
929
+ ],
930
+ "default": "auto",
931
+ "description": "Use fixed DevTools Input commands when possible, require them, or use DOM events only."
932
+ },
933
+ "element_timeout_seconds": {
934
+ "type": "integer",
935
+ "minimum": 1,
936
+ "maximum": 60,
937
+ "default": 10
938
+ }
939
+ },
940
+ "required": [
941
+ "action"
942
+ ]
943
+ }
944
+ ```
945
+
946
+ ## `browser_fill_form`
947
+
948
+ **Fill complex browser form**
949
+
950
+ Fill multiple fields and optionally submit a complex form. Sensitive values can come from registered local resources; errors identify possible earlier mutations without returning field values.
951
+
952
+ | Contract field | Value |
953
+ |---|---|
954
+ | Availability | `full` |
955
+ | Read-only hint | no |
956
+ | Destructive hint | yes |
957
+ | Idempotent hint | no |
958
+ | Open-world hint | yes |
959
+
960
+ ### Input schema
961
+
962
+ ```json
963
+ {
964
+ "type": "object",
965
+ "additionalProperties": false,
966
+ "properties": {
967
+ "tab_id": {
968
+ "type": "integer",
969
+ "minimum": 1
970
+ },
971
+ "fields": {
972
+ "type": "array",
973
+ "minItems": 1,
974
+ "maxItems": 200,
975
+ "items": {
976
+ "type": "object",
977
+ "properties": {
978
+ "selector": {
979
+ "type": "object",
980
+ "properties": {
981
+ "ref": {
982
+ "type": "string",
983
+ "maxLength": 100,
984
+ "description": "Stable element reference returned by browser_inspect_page for the same document and frame."
985
+ },
986
+ "css": {
987
+ "type": "string",
988
+ "maxLength": 2000
989
+ },
990
+ "id": {
991
+ "type": "string",
992
+ "maxLength": 2000
993
+ },
994
+ "name": {
995
+ "type": "string",
996
+ "maxLength": 2000
997
+ },
998
+ "label": {
999
+ "type": "string",
1000
+ "maxLength": 2000
1001
+ },
1002
+ "text": {
1003
+ "type": "string",
1004
+ "maxLength": 2000
1005
+ },
1006
+ "role": {
1007
+ "type": "string",
1008
+ "maxLength": 2000
1009
+ },
1010
+ "placeholder": {
1011
+ "type": "string",
1012
+ "maxLength": 2000
1013
+ },
1014
+ "index": {
1015
+ "type": "integer",
1016
+ "minimum": 0,
1017
+ "maximum": 10000
1018
+ }
1019
+ },
1020
+ "additionalProperties": false
1021
+ },
1022
+ "value": {
1023
+ "type": "string",
1024
+ "maxLength": 131072
1025
+ },
1026
+ "value_resource": {
1027
+ "type": "string",
1028
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
1029
+ },
1030
+ "action": {
1031
+ "type": "string",
1032
+ "enum": [
1033
+ "fill",
1034
+ "select",
1035
+ "check",
1036
+ "uncheck",
1037
+ "click"
1038
+ ],
1039
+ "default": "fill"
1040
+ },
1041
+ "sensitive": {
1042
+ "type": "boolean",
1043
+ "default": false
1044
+ }
1045
+ },
1046
+ "required": [
1047
+ "selector"
1048
+ ],
1049
+ "additionalProperties": false
1050
+ }
1051
+ },
1052
+ "submit": {
1053
+ "type": "boolean",
1054
+ "default": false
1055
+ },
1056
+ "submit_selector": {
1057
+ "type": "object",
1058
+ "properties": {
1059
+ "ref": {
1060
+ "type": "string",
1061
+ "maxLength": 100,
1062
+ "description": "Stable element reference returned by browser_inspect_page for the same document and frame."
1063
+ },
1064
+ "css": {
1065
+ "type": "string",
1066
+ "maxLength": 2000
1067
+ },
1068
+ "id": {
1069
+ "type": "string",
1070
+ "maxLength": 2000
1071
+ },
1072
+ "name": {
1073
+ "type": "string",
1074
+ "maxLength": 2000
1075
+ },
1076
+ "label": {
1077
+ "type": "string",
1078
+ "maxLength": 2000
1079
+ },
1080
+ "text": {
1081
+ "type": "string",
1082
+ "maxLength": 2000
1083
+ },
1084
+ "role": {
1085
+ "type": "string",
1086
+ "maxLength": 2000
1087
+ },
1088
+ "placeholder": {
1089
+ "type": "string",
1090
+ "maxLength": 2000
1091
+ },
1092
+ "index": {
1093
+ "type": "integer",
1094
+ "minimum": 0,
1095
+ "maximum": 10000
1096
+ }
1097
+ },
1098
+ "additionalProperties": false
1099
+ },
1100
+ "wait_for": {
1101
+ "type": "string",
1102
+ "enum": [
1103
+ "none",
1104
+ "domcontentloaded",
1105
+ "complete"
1106
+ ],
1107
+ "default": "none"
1108
+ },
1109
+ "timeout_seconds": {
1110
+ "type": "integer",
1111
+ "minimum": 1,
1112
+ "maximum": 180,
1113
+ "default": 60
1114
+ },
1115
+ "frame_id": {
1116
+ "type": "integer",
1117
+ "minimum": 0
1118
+ },
1119
+ "element_timeout_seconds": {
1120
+ "type": "integer",
1121
+ "minimum": 1,
1122
+ "maximum": 60,
1123
+ "default": 10
1124
+ }
1125
+ },
1126
+ "required": [
1127
+ "fields"
1128
+ ]
1129
+ }
1130
+ ```
1131
+
1132
+ ## `browser_screenshot`
1133
+
1134
+ **Capture browser screenshot**
1135
+
1136
+ Capture the visible area of the active or selected tab from the paired existing browser profile, restore the previous active tab when safe, avoid focusing another window, and return native MCP image content.
1137
+
1138
+ | Contract field | Value |
1139
+ |---|---|
1140
+ | Availability | `full` |
1141
+ | Read-only hint | no |
1142
+ | Destructive hint | no |
1143
+ | Idempotent hint | no |
1144
+ | Open-world hint | yes |
1145
+
1146
+ ### Input schema
1147
+
1148
+ ```json
1149
+ {
1150
+ "type": "object",
1151
+ "additionalProperties": false,
1152
+ "properties": {
1153
+ "tab_id": {
1154
+ "type": "integer",
1155
+ "minimum": 1
1156
+ },
1157
+ "format": {
1158
+ "type": "string",
1159
+ "enum": [
1160
+ "png",
1161
+ "jpeg"
1162
+ ],
1163
+ "default": "png"
1164
+ },
1165
+ "quality": {
1166
+ "type": "integer",
1167
+ "minimum": 1,
1168
+ "maximum": 100,
1169
+ "default": 90
1170
+ },
1171
+ "timeout_seconds": {
1172
+ "type": "integer",
1173
+ "minimum": 1,
1174
+ "maximum": 120,
1175
+ "default": 30
1176
+ }
1177
+ }
1178
+ }
1179
+ ```
1180
+
1181
+ ## `browser_upload_files`
1182
+
1183
+ **Upload browser files**
1184
+
1185
+ Populate a browser file input from registered local resource files without returning file contents through MCP results.
1186
+
1187
+ | Contract field | Value |
1188
+ |---|---|
1189
+ | Availability | `full` |
1190
+ | Read-only hint | no |
1191
+ | Destructive hint | yes |
1192
+ | Idempotent hint | no |
1193
+ | Open-world hint | yes |
1194
+
1195
+ ### Input schema
1196
+
1197
+ ```json
1198
+ {
1199
+ "type": "object",
1200
+ "properties": {
1201
+ "tab_id": {
1202
+ "type": "integer",
1203
+ "minimum": 1
1204
+ },
1205
+ "selector": {
1206
+ "type": "object",
1207
+ "properties": {
1208
+ "ref": {
1209
+ "type": "string",
1210
+ "maxLength": 100,
1211
+ "description": "Stable element reference returned by browser_inspect_page for the same document and frame."
1212
+ },
1213
+ "css": {
1214
+ "type": "string",
1215
+ "maxLength": 2000
1216
+ },
1217
+ "id": {
1218
+ "type": "string",
1219
+ "maxLength": 2000
1220
+ },
1221
+ "name": {
1222
+ "type": "string",
1223
+ "maxLength": 2000
1224
+ },
1225
+ "label": {
1226
+ "type": "string",
1227
+ "maxLength": 2000
1228
+ },
1229
+ "text": {
1230
+ "type": "string",
1231
+ "maxLength": 2000
1232
+ },
1233
+ "role": {
1234
+ "type": "string",
1235
+ "maxLength": 2000
1236
+ },
1237
+ "placeholder": {
1238
+ "type": "string",
1239
+ "maxLength": 2000
1240
+ },
1241
+ "index": {
1242
+ "type": "integer",
1243
+ "minimum": 0,
1244
+ "maximum": 10000
1245
+ }
1246
+ },
1247
+ "additionalProperties": false
1248
+ },
1249
+ "resources": {
1250
+ "type": "array",
1251
+ "minItems": 1,
1252
+ "maxItems": 8,
1253
+ "items": {
1254
+ "type": "string",
1255
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
1256
+ }
1257
+ },
1258
+ "filenames": {
1259
+ "type": "array",
1260
+ "maxItems": 8,
1261
+ "items": {
1262
+ "type": "string",
1263
+ "maxLength": 255
1264
+ }
1265
+ },
1266
+ "mime_types": {
1267
+ "type": "array",
1268
+ "maxItems": 8,
1269
+ "items": {
1270
+ "type": "string",
1271
+ "maxLength": 200
1272
+ }
1273
+ },
1274
+ "timeout_seconds": {
1275
+ "type": "integer",
1276
+ "minimum": 1,
1277
+ "maximum": 180,
1278
+ "default": 60
1279
+ },
1280
+ "frame_id": {
1281
+ "type": "integer",
1282
+ "minimum": 0
1283
+ },
1284
+ "element_timeout_seconds": {
1285
+ "type": "integer",
1286
+ "minimum": 1,
1287
+ "maximum": 60,
1288
+ "default": 10
1289
+ }
1290
+ },
1291
+ "required": [
1292
+ "selector",
1293
+ "resources"
1294
+ ],
1295
+ "additionalProperties": false
1296
+ }
1297
+ ```
1298
+
1299
+ ## `agent_context`
1300
+
1301
+ **Load agent context**
1302
+
1303
+ Discover built-in defaults, bounded automatic project facts, Codex-compatible global/root-to-target instruction precedence, progressively disclosed local skills, explicit commands, and safe automatic package-script command aliases for a target path.
1304
+
1305
+ | Contract field | Value |
1306
+ |---|---|
1307
+ | Availability | `always` |
1308
+ | Read-only hint | yes |
1309
+ | Destructive hint | no |
1310
+ | Idempotent hint | yes |
1311
+ | Open-world hint | no |
1312
+
1313
+ ### Input schema
1314
+
1315
+ ```json
1316
+ {
1317
+ "type": "object",
1318
+ "properties": {
1319
+ "path": {
1320
+ "type": "string",
1321
+ "default": ".",
1322
+ "maxLength": 32768
1323
+ },
1324
+ "include_instruction_content": {
1325
+ "type": "boolean",
1326
+ "default": true
1327
+ },
1328
+ "max_skills": {
1329
+ "type": "integer",
1330
+ "minimum": 1,
1331
+ "maximum": 500,
1332
+ "default": 100
1333
+ }
1334
+ },
1335
+ "additionalProperties": false
1336
+ }
1337
+ ```
1338
+
1339
+ ## `list_local_skills`
1340
+
1341
+ **List local skills**
1342
+
1343
+ Search bounded SKILL.md or skill.md bundles from Codex-compatible and explicitly configured skill roots without executing them.
1344
+
1345
+ | Contract field | Value |
1346
+ |---|---|
1347
+ | Availability | `always` |
1348
+ | Read-only hint | yes |
1349
+ | Destructive hint | no |
1350
+ | Idempotent hint | yes |
1351
+ | Open-world hint | no |
1352
+
1353
+ ### Input schema
1354
+
1355
+ ```json
1356
+ {
1357
+ "type": "object",
1358
+ "properties": {
1359
+ "path": {
1360
+ "type": "string",
1361
+ "default": ".",
1362
+ "maxLength": 32768
1363
+ },
1364
+ "query": {
1365
+ "type": "string",
1366
+ "default": "",
1367
+ "maxLength": 1000
1368
+ },
1369
+ "max_results": {
1370
+ "type": "integer",
1371
+ "minimum": 1,
1372
+ "maximum": 500,
1373
+ "default": 100
1374
+ }
1375
+ },
1376
+ "additionalProperties": false
1377
+ }
1378
+ ```
1379
+
1380
+ ## `load_local_skill`
1381
+
1382
+ **Load local skill**
1383
+
1384
+ Load one discovered local skill entrypoint and a bounded relative file inventory. Loading returns instructions and never executes skill files implicitly.
1385
+
1386
+ | Contract field | Value |
1387
+ |---|---|
1388
+ | Availability | `always` |
1389
+ | Read-only hint | yes |
1390
+ | Destructive hint | no |
1391
+ | Idempotent hint | yes |
1392
+ | Open-world hint | no |
1393
+
1394
+ ### Input schema
1395
+
1396
+ ```json
1397
+ {
1398
+ "type": "object",
1399
+ "properties": {
1400
+ "skill": {
1401
+ "type": "string",
1402
+ "minLength": 1,
1403
+ "maxLength": 32768
1404
+ },
1405
+ "path": {
1406
+ "type": "string",
1407
+ "default": ".",
1408
+ "maxLength": 32768
1409
+ },
1410
+ "max_files": {
1411
+ "type": "integer",
1412
+ "minimum": 1,
1413
+ "maximum": 500,
1414
+ "default": 200
1415
+ }
1416
+ },
1417
+ "required": [
1418
+ "skill"
1419
+ ],
1420
+ "additionalProperties": false
1421
+ }
1422
+ ```
1423
+
1424
+ ## `list_local_commands`
1425
+
1426
+ **List registered local commands**
1427
+
1428
+ List effective direct-argv commands from project manifests and safe automatic package-script aliases, including provenance and timeout limits.
1429
+
1430
+ | Contract field | Value |
1431
+ |---|---|
1432
+ | Availability | `always` |
1433
+ | Read-only hint | yes |
1434
+ | Destructive hint | no |
1435
+ | Idempotent hint | yes |
1436
+ | Open-world hint | no |
1437
+
1438
+ ### Input schema
1439
+
1440
+ ```json
1441
+ {
1442
+ "type": "object",
1443
+ "properties": {
1444
+ "path": {
1445
+ "type": "string",
1446
+ "default": ".",
1447
+ "maxLength": 32768
1448
+ }
1449
+ },
1450
+ "additionalProperties": false
1451
+ }
1452
+ ```
1453
+
1454
+ ## `run_local_command`
1455
+
1456
+ **Run registered local command**
1457
+
1458
+ Run an effective manifest or automatic package-script command through its fixed argv, cwd, timeout ceiling, and extra-argument policy.
1459
+
1460
+ | Contract field | Value |
1461
+ |---|---|
1462
+ | Availability | `direct-exec` |
1463
+ | Read-only hint | no |
1464
+ | Destructive hint | yes |
1465
+ | Idempotent hint | no |
1466
+ | Open-world hint | yes |
1467
+
1468
+ ### Input schema
1469
+
1470
+ ```json
1471
+ {
1472
+ "type": "object",
1473
+ "properties": {
1474
+ "name": {
1475
+ "type": "string",
1476
+ "minLength": 1,
1477
+ "maxLength": 64
1478
+ },
1479
+ "path": {
1480
+ "type": "string",
1481
+ "default": ".",
1482
+ "maxLength": 32768
1483
+ },
1484
+ "args": {
1485
+ "type": "array",
1486
+ "items": {
1487
+ "type": "string",
1488
+ "maxLength": 65536
1489
+ },
1490
+ "maxItems": 64,
1491
+ "default": []
1492
+ },
1493
+ "timeout_seconds": {
1494
+ "type": "integer",
1495
+ "minimum": 1,
1496
+ "maximum": 600
1497
+ }
1498
+ },
1499
+ "required": [
1500
+ "name"
1501
+ ],
1502
+ "additionalProperties": false
1503
+ }
1504
+ ```
1505
+
1506
+ ## `list_roots`
1507
+
1508
+ **List workspace roots**
1509
+
1510
+ List filesystem roots exposed by the active local policy. The default full profile exposes local filesystem roots and returns absolute paths.
1511
+
1512
+ | Contract field | Value |
1513
+ |---|---|
1514
+ | Availability | `always` |
1515
+ | Read-only hint | yes |
1516
+ | Destructive hint | no |
1517
+ | Idempotent hint | yes |
1518
+ | Open-world hint | no |
1519
+
1520
+ ### Input schema
1521
+
1522
+ ```json
1523
+ {
1524
+ "type": "object",
1525
+ "additionalProperties": false
1526
+ }
1527
+ ```
1528
+
1529
+ ## `list_dir`
1530
+
1531
+ **List directory**
1532
+
1533
+ List direct children of a workspace directory.
1534
+
1535
+ | Contract field | Value |
1536
+ |---|---|
1537
+ | Availability | `always` |
1538
+ | Read-only hint | yes |
1539
+ | Destructive hint | no |
1540
+ | Idempotent hint | yes |
1541
+ | Open-world hint | no |
1542
+
1543
+ ### Input schema
1544
+
1545
+ ```json
1546
+ {
1547
+ "type": "object",
1548
+ "properties": {
1549
+ "path": {
1550
+ "type": "string",
1551
+ "default": "."
1552
+ }
1553
+ },
1554
+ "additionalProperties": false
1555
+ }
1556
+ ```
1557
+
1558
+ ## `list_files`
1559
+
1560
+ **List files**
1561
+
1562
+ Recursively list files under a workspace path with bounded traversal and output.
1563
+
1564
+ | Contract field | Value |
1565
+ |---|---|
1566
+ | Availability | `always` |
1567
+ | Read-only hint | yes |
1568
+ | Destructive hint | no |
1569
+ | Idempotent hint | yes |
1570
+ | Open-world hint | no |
1571
+
1572
+ ### Input schema
1573
+
1574
+ ```json
1575
+ {
1576
+ "type": "object",
1577
+ "properties": {
1578
+ "path": {
1579
+ "type": "string",
1580
+ "default": "."
1581
+ },
1582
+ "max_files": {
1583
+ "type": "integer",
1584
+ "minimum": 1,
1585
+ "maximum": 10000,
1586
+ "default": 1000
1587
+ }
1588
+ },
1589
+ "additionalProperties": false
1590
+ }
1591
+ ```
1592
+
1593
+ ## `read_file`
1594
+
1595
+ **Read text file**
1596
+
1597
+ Read a UTF-8 regular file or an inclusive 1-based line range. The server does not block sensitive-looking filenames; access follows the active local policy and operating-system permissions.
1598
+
1599
+ | Contract field | Value |
1600
+ |---|---|
1601
+ | Availability | `always` |
1602
+ | Read-only hint | yes |
1603
+ | Destructive hint | no |
1604
+ | Idempotent hint | yes |
1605
+ | Open-world hint | no |
1606
+
1607
+ ### Input schema
1608
+
1609
+ ```json
1610
+ {
1611
+ "type": "object",
1612
+ "properties": {
1613
+ "path": {
1614
+ "type": "string"
1615
+ },
1616
+ "start_line": {
1617
+ "type": "integer",
1618
+ "minimum": 1
1619
+ },
1620
+ "end_line": {
1621
+ "type": "integer",
1622
+ "minimum": 1
1623
+ },
1624
+ "max_bytes": {
1625
+ "type": "integer",
1626
+ "minimum": 1,
1627
+ "maximum": 5242880,
1628
+ "default": 1048576
1629
+ }
1630
+ },
1631
+ "required": [
1632
+ "path"
1633
+ ],
1634
+ "additionalProperties": false
1635
+ }
1636
+ ```
1637
+
1638
+ ## `view_image`
1639
+
1640
+ **View image**
1641
+
1642
+ Read a bounded PNG, JPEG, GIF, or WebP image from the workspace and return native MCP image content.
1643
+
1644
+ | Contract field | Value |
1645
+ |---|---|
1646
+ | Availability | `always` |
1647
+ | Read-only hint | yes |
1648
+ | Destructive hint | no |
1649
+ | Idempotent hint | yes |
1650
+ | Open-world hint | no |
1651
+
1652
+ ### Input schema
1653
+
1654
+ ```json
1655
+ {
1656
+ "type": "object",
1657
+ "properties": {
1658
+ "path": {
1659
+ "type": "string"
1660
+ }
1661
+ },
1662
+ "required": [
1663
+ "path"
1664
+ ],
1665
+ "additionalProperties": false
1666
+ }
1667
+ ```
1668
+
1669
+ ## `write_file`
1670
+
1671
+ **Write text file**
1672
+
1673
+ Atomically write a UTF-8 file up to 5 MiB. Supports create-only and optimistic SHA-256 checks; symbolic-link destinations are rejected.
1674
+
1675
+ | Contract field | Value |
1676
+ |---|---|
1677
+ | Availability | `write` |
1678
+ | Read-only hint | no |
1679
+ | Destructive hint | yes |
1680
+ | Idempotent hint | no |
1681
+ | Open-world hint | no |
1682
+
1683
+ ### Input schema
1684
+
1685
+ ```json
1686
+ {
1687
+ "type": "object",
1688
+ "properties": {
1689
+ "path": {
1690
+ "type": "string"
1691
+ },
1692
+ "content": {
1693
+ "type": "string"
1694
+ },
1695
+ "create_only": {
1696
+ "type": "boolean",
1697
+ "default": false
1698
+ },
1699
+ "expected_sha256": {
1700
+ "type": "string",
1701
+ "pattern": "^[a-fA-F0-9]{64}$"
1702
+ }
1703
+ },
1704
+ "required": [
1705
+ "path",
1706
+ "content"
1707
+ ],
1708
+ "additionalProperties": false
1709
+ }
1710
+ ```
1711
+
1712
+ ## `edit_file`
1713
+
1714
+ **Edit text file**
1715
+
1716
+ Atomically replace an exact text fragment in one UTF-8 file. By default the old text must occur exactly once.
1717
+
1718
+ | Contract field | Value |
1719
+ |---|---|
1720
+ | Availability | `write` |
1721
+ | Read-only hint | no |
1722
+ | Destructive hint | yes |
1723
+ | Idempotent hint | no |
1724
+ | Open-world hint | no |
1725
+
1726
+ ### Input schema
1727
+
1728
+ ```json
1729
+ {
1730
+ "type": "object",
1731
+ "properties": {
1732
+ "path": {
1733
+ "type": "string"
1734
+ },
1735
+ "old_text": {
1736
+ "type": "string",
1737
+ "minLength": 1
1738
+ },
1739
+ "new_text": {
1740
+ "type": "string"
1741
+ },
1742
+ "replace_all": {
1743
+ "type": "boolean",
1744
+ "default": false
1745
+ },
1746
+ "expected_sha256": {
1747
+ "type": "string",
1748
+ "pattern": "^[a-fA-F0-9]{64}$"
1749
+ }
1750
+ },
1751
+ "required": [
1752
+ "path",
1753
+ "old_text",
1754
+ "new_text"
1755
+ ],
1756
+ "additionalProperties": false
1757
+ }
1758
+ ```
1759
+
1760
+ ## `apply_patch`
1761
+
1762
+ **Apply structured patch**
1763
+
1764
+ Apply a bounded Begin Patch/End Patch envelope containing add, update, move, or delete file operations. All paths are prevalidated and mutations are serialized.
1765
+
1766
+ | Contract field | Value |
1767
+ |---|---|
1768
+ | Availability | `write` |
1769
+ | Read-only hint | no |
1770
+ | Destructive hint | yes |
1771
+ | Idempotent hint | no |
1772
+ | Open-world hint | no |
1773
+
1774
+ ### Input schema
1775
+
1776
+ ```json
1777
+ {
1778
+ "type": "object",
1779
+ "properties": {
1780
+ "patch": {
1781
+ "type": "string",
1782
+ "minLength": 1,
1783
+ "maxLength": 5242880
1784
+ }
1785
+ },
1786
+ "required": [
1787
+ "patch"
1788
+ ],
1789
+ "additionalProperties": false
1790
+ }
1791
+ ```
1792
+
1793
+ ## `search_text`
1794
+
1795
+ **Search text**
1796
+
1797
+ Search UTF-8 text files under a workspace path for a literal substring.
1798
+
1799
+ | Contract field | Value |
1800
+ |---|---|
1801
+ | Availability | `always` |
1802
+ | Read-only hint | yes |
1803
+ | Destructive hint | no |
1804
+ | Idempotent hint | yes |
1805
+ | Open-world hint | no |
1806
+
1807
+ ### Input schema
1808
+
1809
+ ```json
1810
+ {
1811
+ "type": "object",
1812
+ "properties": {
1813
+ "query": {
1814
+ "type": "string",
1815
+ "minLength": 1
1816
+ },
1817
+ "path": {
1818
+ "type": "string",
1819
+ "default": "."
1820
+ },
1821
+ "max_matches": {
1822
+ "type": "integer",
1823
+ "minimum": 1,
1824
+ "maximum": 1000,
1825
+ "default": 100
1826
+ },
1827
+ "max_files": {
1828
+ "type": "integer",
1829
+ "minimum": 1,
1830
+ "maximum": 100000,
1831
+ "default": 10000
1832
+ }
1833
+ },
1834
+ "required": [
1835
+ "query"
1836
+ ],
1837
+ "additionalProperties": false
1838
+ }
1839
+ ```
1840
+
1841
+ ## `git_status`
1842
+
1843
+ **Git status**
1844
+
1845
+ Return bounded Git porcelain status for the repository containing a workspace path.
1846
+
1847
+ | Contract field | Value |
1848
+ |---|---|
1849
+ | Availability | `always` |
1850
+ | Read-only hint | yes |
1851
+ | Destructive hint | no |
1852
+ | Idempotent hint | yes |
1853
+ | Open-world hint | no |
1854
+
1855
+ ### Input schema
1856
+
1857
+ ```json
1858
+ {
1859
+ "type": "object",
1860
+ "properties": {
1861
+ "path": {
1862
+ "type": "string",
1863
+ "default": "."
1864
+ }
1865
+ },
1866
+ "additionalProperties": false
1867
+ }
1868
+ ```
1869
+
1870
+ ## `git_diff`
1871
+
1872
+ **Git diff**
1873
+
1874
+ Return bounded unified Git diff with external diff, text conversion, and filesystem monitor helpers disabled.
1875
+
1876
+ | Contract field | Value |
1877
+ |---|---|
1878
+ | Availability | `always` |
1879
+ | Read-only hint | yes |
1880
+ | Destructive hint | no |
1881
+ | Idempotent hint | yes |
1882
+ | Open-world hint | no |
1883
+
1884
+ ### Input schema
1885
+
1886
+ ```json
1887
+ {
1888
+ "type": "object",
1889
+ "properties": {
1890
+ "path": {
1891
+ "type": "string",
1892
+ "default": "."
1893
+ },
1894
+ "staged": {
1895
+ "type": "boolean",
1896
+ "default": false
1897
+ },
1898
+ "max_bytes": {
1899
+ "type": "integer",
1900
+ "minimum": 1,
1901
+ "maximum": 5242880,
1902
+ "default": 1048576
1903
+ }
1904
+ },
1905
+ "additionalProperties": false
1906
+ }
1907
+ ```
1908
+
1909
+ ## `git_log`
1910
+
1911
+ **Git log**
1912
+
1913
+ Return recent commits in a bounded, machine-readable format. Author email addresses are omitted unless explicitly requested.
1914
+
1915
+ | Contract field | Value |
1916
+ |---|---|
1917
+ | Availability | `always` |
1918
+ | Read-only hint | yes |
1919
+ | Destructive hint | no |
1920
+ | Idempotent hint | yes |
1921
+ | Open-world hint | no |
1922
+
1923
+ ### Input schema
1924
+
1925
+ ```json
1926
+ {
1927
+ "type": "object",
1928
+ "properties": {
1929
+ "path": {
1930
+ "type": "string",
1931
+ "default": "."
1932
+ },
1933
+ "max_count": {
1934
+ "type": "integer",
1935
+ "minimum": 1,
1936
+ "maximum": 100,
1937
+ "default": 20
1938
+ },
1939
+ "include_author_email": {
1940
+ "type": "boolean",
1941
+ "default": false
1942
+ }
1943
+ },
1944
+ "additionalProperties": false
1945
+ }
1946
+ ```
1947
+
1948
+ ## `git_show`
1949
+
1950
+ **Git show**
1951
+
1952
+ Return bounded metadata and patch output for one revision without running repository-configured external helpers.
1953
+
1954
+ | Contract field | Value |
1955
+ |---|---|
1956
+ | Availability | `always` |
1957
+ | Read-only hint | yes |
1958
+ | Destructive hint | no |
1959
+ | Idempotent hint | yes |
1960
+ | Open-world hint | no |
1961
+
1962
+ ### Input schema
1963
+
1964
+ ```json
1965
+ {
1966
+ "type": "object",
1967
+ "properties": {
1968
+ "path": {
1969
+ "type": "string",
1970
+ "default": "."
1971
+ },
1972
+ "revision": {
1973
+ "type": "string",
1974
+ "default": "HEAD"
1975
+ },
1976
+ "max_bytes": {
1977
+ "type": "integer",
1978
+ "minimum": 1,
1979
+ "maximum": 5242880,
1980
+ "default": 1048576
1981
+ }
1982
+ },
1983
+ "additionalProperties": false
1984
+ }
1985
+ ```
1986
+
1987
+ ## `run_process`
1988
+
1989
+ **Run process directly**
1990
+
1991
+ Execute an argv array without a command shell. This avoids shell parsing but does not sandbox the executable or code it launches.
1992
+
1993
+ | Contract field | Value |
1994
+ |---|---|
1995
+ | Availability | `direct-exec` |
1996
+ | Read-only hint | no |
1997
+ | Destructive hint | yes |
1998
+ | Idempotent hint | no |
1999
+ | Open-world hint | yes |
2000
+
2001
+ ### Input schema
2002
+
2003
+ ```json
2004
+ {
2005
+ "type": "object",
2006
+ "properties": {
2007
+ "argv": {
2008
+ "type": "array",
2009
+ "items": {
2010
+ "type": "string"
2011
+ },
2012
+ "minItems": 1,
2013
+ "maxItems": 256
2014
+ },
2015
+ "cwd": {
2016
+ "type": "string",
2017
+ "default": "."
2018
+ },
2019
+ "timeout_seconds": {
2020
+ "type": "integer",
2021
+ "minimum": 1,
2022
+ "maximum": 600,
2023
+ "default": 120
2024
+ }
2025
+ },
2026
+ "required": [
2027
+ "argv"
2028
+ ],
2029
+ "additionalProperties": false
2030
+ }
2031
+ ```
2032
+
2033
+ ## `start_process`
2034
+
2035
+ **Start process session**
2036
+
2037
+ Start a direct argv process without a shell and retain bounded stdout, stderr, and stdin state across MCP calls.
2038
+
2039
+ | Contract field | Value |
2040
+ |---|---|
2041
+ | Availability | `direct-exec` |
2042
+ | Read-only hint | no |
2043
+ | Destructive hint | yes |
2044
+ | Idempotent hint | no |
2045
+ | Open-world hint | yes |
2046
+
2047
+ ### Input schema
2048
+
2049
+ ```json
2050
+ {
2051
+ "type": "object",
2052
+ "properties": {
2053
+ "argv": {
2054
+ "type": "array",
2055
+ "items": {
2056
+ "type": "string"
2057
+ },
2058
+ "minItems": 1,
2059
+ "maxItems": 256
2060
+ },
2061
+ "cwd": {
2062
+ "type": "string",
2063
+ "default": "."
2064
+ }
2065
+ },
2066
+ "required": [
2067
+ "argv"
2068
+ ],
2069
+ "additionalProperties": false
2070
+ }
2071
+ ```
2072
+
2073
+ ## `read_process`
2074
+
2075
+ **Read process session**
2076
+
2077
+ Read bounded stdout and stderr deltas from a server-managed process session, optionally waiting briefly for new output.
2078
+
2079
+ | Contract field | Value |
2080
+ |---|---|
2081
+ | Availability | `direct-exec` |
2082
+ | Read-only hint | yes |
2083
+ | Destructive hint | no |
2084
+ | Idempotent hint | yes |
2085
+ | Open-world hint | no |
2086
+
2087
+ ### Input schema
2088
+
2089
+ ```json
2090
+ {
2091
+ "type": "object",
2092
+ "properties": {
2093
+ "session_id": {
2094
+ "type": "string"
2095
+ },
2096
+ "stdout_offset": {
2097
+ "type": "integer",
2098
+ "minimum": 0,
2099
+ "default": 0
2100
+ },
2101
+ "stderr_offset": {
2102
+ "type": "integer",
2103
+ "minimum": 0,
2104
+ "default": 0
2105
+ },
2106
+ "max_bytes": {
2107
+ "type": "integer",
2108
+ "minimum": 1,
2109
+ "maximum": 262144,
2110
+ "default": 65536
2111
+ },
2112
+ "wait_ms": {
2113
+ "type": "integer",
2114
+ "minimum": 0,
2115
+ "maximum": 30000,
2116
+ "default": 0
2117
+ },
2118
+ "wait_for_exit": {
2119
+ "type": "boolean",
2120
+ "default": false
2121
+ }
2122
+ },
2123
+ "required": [
2124
+ "session_id"
2125
+ ],
2126
+ "additionalProperties": false
2127
+ }
2128
+ ```
2129
+
2130
+ ## `write_process`
2131
+
2132
+ **Write process stdin**
2133
+
2134
+ Write bounded UTF-8 data to a live process session and optionally close its stdin stream.
2135
+
2136
+ | Contract field | Value |
2137
+ |---|---|
2138
+ | Availability | `direct-exec` |
2139
+ | Read-only hint | no |
2140
+ | Destructive hint | yes |
2141
+ | Idempotent hint | no |
2142
+ | Open-world hint | yes |
2143
+
2144
+ ### Input schema
2145
+
2146
+ ```json
2147
+ {
2148
+ "type": "object",
2149
+ "properties": {
2150
+ "session_id": {
2151
+ "type": "string"
2152
+ },
2153
+ "data": {
2154
+ "type": "string",
2155
+ "maxLength": 65536
2156
+ },
2157
+ "close_stdin": {
2158
+ "type": "boolean",
2159
+ "default": false
2160
+ }
2161
+ },
2162
+ "required": [
2163
+ "session_id"
2164
+ ],
2165
+ "additionalProperties": false
2166
+ }
2167
+ ```
2168
+
2169
+ ## `kill_process`
2170
+
2171
+ **Terminate process session**
2172
+
2173
+ Terminate a live server-managed process tree with graceful or forced termination.
2174
+
2175
+ | Contract field | Value |
2176
+ |---|---|
2177
+ | Availability | `direct-exec` |
2178
+ | Read-only hint | no |
2179
+ | Destructive hint | yes |
2180
+ | Idempotent hint | yes |
2181
+ | Open-world hint | yes |
2182
+
2183
+ ### Input schema
2184
+
2185
+ ```json
2186
+ {
2187
+ "type": "object",
2188
+ "properties": {
2189
+ "session_id": {
2190
+ "type": "string"
2191
+ },
2192
+ "force": {
2193
+ "type": "boolean",
2194
+ "default": false
2195
+ }
2196
+ },
2197
+ "required": [
2198
+ "session_id"
2199
+ ],
2200
+ "additionalProperties": false
2201
+ }
2202
+ ```
2203
+
2204
+ ## `diagnose_runtime`
2205
+
2206
+ **Diagnose runtime layers**
2207
+
2208
+ Run fixed, non-user-controlled local probes to distinguish MCP policy, local filesystem, process-spawn, shell, managed-job storage, and registered-resource failures. A successful response proves the request reached the local daemon; it cannot diagnose a host refusal that blocks the tool call itself.
2209
+
2210
+ | Contract field | Value |
2211
+ |---|---|
2212
+ | Availability | `always` |
2213
+ | Read-only hint | yes |
2214
+ | Destructive hint | no |
2215
+ | Idempotent hint | yes |
2216
+ | Open-world hint | no |
2217
+
2218
+ ### Input schema
2219
+
2220
+ ```json
2221
+ {
2222
+ "type": "object",
2223
+ "additionalProperties": false
2224
+ }
2225
+ ```
2226
+
2227
+ ## `list_local_resources`
2228
+
2229
+ **List local resource aliases**
2230
+
2231
+ List names and validation status for locally registered file resources without returning their paths or contents. Resources are registered only through the local machine-mcp CLI.
2232
+
2233
+ | Contract field | Value |
2234
+ |---|---|
2235
+ | Availability | `always` |
2236
+ | Read-only hint | yes |
2237
+ | Destructive hint | no |
2238
+ | Idempotent hint | yes |
2239
+ | Open-world hint | no |
2240
+
2241
+ ### Input schema
2242
+
2243
+ ```json
2244
+ {
2245
+ "type": "object",
2246
+ "additionalProperties": false
2247
+ }
2248
+ ```
2249
+
2250
+ ## `generate_ssh_key_resource`
2251
+
2252
+ **Generate SSH key resource**
2253
+
2254
+ Generate or reuse an Ed25519 SSH key pair on the local machine and register the private key file as a local resource alias. Private key content is never returned. Local paths are omitted unless expose_paths=true; fingerprint, permissions, and registration status are returned. Available only under canonical full policy.
2255
+
2256
+ | Contract field | Value |
2257
+ |---|---|
2258
+ | Availability | `full` |
2259
+ | Read-only hint | no |
2260
+ | Destructive hint | no |
2261
+ | Idempotent hint | yes |
2262
+ | Open-world hint | no |
2263
+
2264
+ ### Input schema
2265
+
2266
+ ```json
2267
+ {
2268
+ "type": "object",
2269
+ "properties": {
2270
+ "name": {
2271
+ "type": "string",
2272
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2273
+ },
2274
+ "path": {
2275
+ "type": "string",
2276
+ "maxLength": 4096
2277
+ },
2278
+ "comment": {
2279
+ "type": "string",
2280
+ "maxLength": 256
2281
+ },
2282
+ "expose_paths": {
2283
+ "type": "boolean",
2284
+ "description": "Return local private/public key paths. Defaults to false."
2285
+ }
2286
+ },
2287
+ "required": [
2288
+ "name"
2289
+ ],
2290
+ "additionalProperties": false
2291
+ }
2292
+ ```
2293
+
2294
+ ## `stage_job`
2295
+
2296
+ **Stage managed job for local approval**
2297
+
2298
+ Validate and persist a managed-job plan without starting any process. Use this when execution tools are unavailable or local operator review is required; launch later with machine-mcp job approve JOB_ID.
2299
+
2300
+ | Contract field | Value |
2301
+ |---|---|
2302
+ | Availability | `write` |
2303
+ | Read-only hint | no |
2304
+ | Destructive hint | no |
2305
+ | Idempotent hint | no |
2306
+ | Open-world hint | no |
2307
+
2308
+ ### Input schema
2309
+
2310
+ ```json
2311
+ {
2312
+ "type": "object",
2313
+ "properties": {
2314
+ "name": {
2315
+ "type": "string",
2316
+ "maxLength": 128
2317
+ },
2318
+ "steps": {
2319
+ "type": "array",
2320
+ "minItems": 1,
2321
+ "maxItems": 16,
2322
+ "items": {
2323
+ "type": "object",
2324
+ "properties": {
2325
+ "name": {
2326
+ "type": "string",
2327
+ "maxLength": 128
2328
+ },
2329
+ "argv": {
2330
+ "type": "array",
2331
+ "minItems": 1,
2332
+ "maxItems": 256,
2333
+ "items": {
2334
+ "type": "string",
2335
+ "maxLength": 16384
2336
+ }
2337
+ },
2338
+ "cwd": {
2339
+ "type": "string",
2340
+ "maxLength": 4096
2341
+ },
2342
+ "env": {
2343
+ "type": "object",
2344
+ "maxProperties": 64,
2345
+ "additionalProperties": {
2346
+ "type": "string",
2347
+ "maxLength": 16384
2348
+ }
2349
+ },
2350
+ "env_resources": {
2351
+ "type": "object",
2352
+ "maxProperties": 32,
2353
+ "additionalProperties": {
2354
+ "type": "string",
2355
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2356
+ }
2357
+ },
2358
+ "stdin": {
2359
+ "type": "string",
2360
+ "maxLength": 262144
2361
+ },
2362
+ "stdin_resource": {
2363
+ "type": "string",
2364
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2365
+ },
2366
+ "timeout_seconds": {
2367
+ "type": "integer",
2368
+ "minimum": 1,
2369
+ "maximum": 3600,
2370
+ "default": 600
2371
+ },
2372
+ "allow_failure": {
2373
+ "type": "boolean",
2374
+ "default": false
2375
+ },
2376
+ "capture_output": {
2377
+ "type": "string",
2378
+ "enum": [
2379
+ "redacted",
2380
+ "discard"
2381
+ ],
2382
+ "default": "redacted"
2383
+ }
2384
+ },
2385
+ "required": [
2386
+ "argv"
2387
+ ],
2388
+ "additionalProperties": false
2389
+ }
2390
+ },
2391
+ "finally_steps": {
2392
+ "type": "array",
2393
+ "maxItems": 16,
2394
+ "items": {
2395
+ "type": "object",
2396
+ "properties": {
2397
+ "name": {
2398
+ "type": "string",
2399
+ "maxLength": 128
2400
+ },
2401
+ "argv": {
2402
+ "type": "array",
2403
+ "minItems": 1,
2404
+ "maxItems": 256,
2405
+ "items": {
2406
+ "type": "string",
2407
+ "maxLength": 16384
2408
+ }
2409
+ },
2410
+ "cwd": {
2411
+ "type": "string",
2412
+ "maxLength": 4096
2413
+ },
2414
+ "env": {
2415
+ "type": "object",
2416
+ "maxProperties": 64,
2417
+ "additionalProperties": {
2418
+ "type": "string",
2419
+ "maxLength": 16384
2420
+ }
2421
+ },
2422
+ "env_resources": {
2423
+ "type": "object",
2424
+ "maxProperties": 32,
2425
+ "additionalProperties": {
2426
+ "type": "string",
2427
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2428
+ }
2429
+ },
2430
+ "stdin": {
2431
+ "type": "string",
2432
+ "maxLength": 262144
2433
+ },
2434
+ "stdin_resource": {
2435
+ "type": "string",
2436
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2437
+ },
2438
+ "timeout_seconds": {
2439
+ "type": "integer",
2440
+ "minimum": 1,
2441
+ "maximum": 3600,
2442
+ "default": 600
2443
+ },
2444
+ "allow_failure": {
2445
+ "type": "boolean",
2446
+ "default": false
2447
+ },
2448
+ "capture_output": {
2449
+ "type": "string",
2450
+ "enum": [
2451
+ "redacted",
2452
+ "discard"
2453
+ ],
2454
+ "default": "redacted"
2455
+ }
2456
+ },
2457
+ "required": [
2458
+ "argv"
2459
+ ],
2460
+ "additionalProperties": false
2461
+ }
2462
+ },
2463
+ "temporary_files": {
2464
+ "type": "array",
2465
+ "maxItems": 16,
2466
+ "items": {
2467
+ "type": "object",
2468
+ "properties": {
2469
+ "name": {
2470
+ "type": "string",
2471
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2472
+ },
2473
+ "content": {
2474
+ "type": "string",
2475
+ "maxLength": 262144
2476
+ },
2477
+ "executable": {
2478
+ "type": "boolean",
2479
+ "default": false
2480
+ }
2481
+ },
2482
+ "required": [
2483
+ "name",
2484
+ "content"
2485
+ ],
2486
+ "additionalProperties": false
2487
+ }
2488
+ }
2489
+ },
2490
+ "required": [
2491
+ "steps"
2492
+ ],
2493
+ "additionalProperties": false
2494
+ }
2495
+ ```
2496
+
2497
+ ## `start_job`
2498
+
2499
+ **Start managed job**
2500
+
2501
+ Durably accept a detached argv-based job with ordered steps, job-scoped temporary files, and guaranteed-attempt finally steps. The independent local runner continues if the MCP connection disappears. Use {{temp:name}}, {{resource:name}}, env_resources, or stdin_resource; registered resource contents never enter MCP arguments.
2502
+
2503
+ | Contract field | Value |
2504
+ |---|---|
2505
+ | Availability | `write+direct-exec` |
2506
+ | Read-only hint | no |
2507
+ | Destructive hint | yes |
2508
+ | Idempotent hint | no |
2509
+ | Open-world hint | yes |
2510
+
2511
+ ### Input schema
2512
+
2513
+ ```json
2514
+ {
2515
+ "type": "object",
2516
+ "properties": {
2517
+ "name": {
2518
+ "type": "string",
2519
+ "maxLength": 128
2520
+ },
2521
+ "steps": {
2522
+ "type": "array",
2523
+ "minItems": 1,
2524
+ "maxItems": 16,
2525
+ "items": {
2526
+ "type": "object",
2527
+ "properties": {
2528
+ "name": {
2529
+ "type": "string",
2530
+ "maxLength": 128
2531
+ },
2532
+ "argv": {
2533
+ "type": "array",
2534
+ "minItems": 1,
2535
+ "maxItems": 256,
2536
+ "items": {
2537
+ "type": "string",
2538
+ "maxLength": 16384
2539
+ }
2540
+ },
2541
+ "cwd": {
2542
+ "type": "string",
2543
+ "maxLength": 4096
2544
+ },
2545
+ "env": {
2546
+ "type": "object",
2547
+ "maxProperties": 64,
2548
+ "additionalProperties": {
2549
+ "type": "string",
2550
+ "maxLength": 16384
2551
+ }
2552
+ },
2553
+ "env_resources": {
2554
+ "type": "object",
2555
+ "maxProperties": 32,
2556
+ "additionalProperties": {
2557
+ "type": "string",
2558
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2559
+ }
2560
+ },
2561
+ "stdin": {
2562
+ "type": "string",
2563
+ "maxLength": 262144
2564
+ },
2565
+ "stdin_resource": {
2566
+ "type": "string",
2567
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2568
+ },
2569
+ "timeout_seconds": {
2570
+ "type": "integer",
2571
+ "minimum": 1,
2572
+ "maximum": 3600,
2573
+ "default": 600
2574
+ },
2575
+ "allow_failure": {
2576
+ "type": "boolean",
2577
+ "default": false
2578
+ },
2579
+ "capture_output": {
2580
+ "type": "string",
2581
+ "enum": [
2582
+ "redacted",
2583
+ "discard"
2584
+ ],
2585
+ "default": "redacted"
2586
+ }
2587
+ },
2588
+ "required": [
2589
+ "argv"
2590
+ ],
2591
+ "additionalProperties": false
2592
+ }
2593
+ },
2594
+ "finally_steps": {
2595
+ "type": "array",
2596
+ "maxItems": 16,
2597
+ "items": {
2598
+ "type": "object",
2599
+ "properties": {
2600
+ "name": {
2601
+ "type": "string",
2602
+ "maxLength": 128
2603
+ },
2604
+ "argv": {
2605
+ "type": "array",
2606
+ "minItems": 1,
2607
+ "maxItems": 256,
2608
+ "items": {
2609
+ "type": "string",
2610
+ "maxLength": 16384
2611
+ }
2612
+ },
2613
+ "cwd": {
2614
+ "type": "string",
2615
+ "maxLength": 4096
2616
+ },
2617
+ "env": {
2618
+ "type": "object",
2619
+ "maxProperties": 64,
2620
+ "additionalProperties": {
2621
+ "type": "string",
2622
+ "maxLength": 16384
2623
+ }
2624
+ },
2625
+ "env_resources": {
2626
+ "type": "object",
2627
+ "maxProperties": 32,
2628
+ "additionalProperties": {
2629
+ "type": "string",
2630
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2631
+ }
2632
+ },
2633
+ "stdin": {
2634
+ "type": "string",
2635
+ "maxLength": 262144
2636
+ },
2637
+ "stdin_resource": {
2638
+ "type": "string",
2639
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2640
+ },
2641
+ "timeout_seconds": {
2642
+ "type": "integer",
2643
+ "minimum": 1,
2644
+ "maximum": 3600,
2645
+ "default": 600
2646
+ },
2647
+ "allow_failure": {
2648
+ "type": "boolean",
2649
+ "default": false
2650
+ },
2651
+ "capture_output": {
2652
+ "type": "string",
2653
+ "enum": [
2654
+ "redacted",
2655
+ "discard"
2656
+ ],
2657
+ "default": "redacted"
2658
+ }
2659
+ },
2660
+ "required": [
2661
+ "argv"
2662
+ ],
2663
+ "additionalProperties": false
2664
+ }
2665
+ },
2666
+ "temporary_files": {
2667
+ "type": "array",
2668
+ "maxItems": 16,
2669
+ "items": {
2670
+ "type": "object",
2671
+ "properties": {
2672
+ "name": {
2673
+ "type": "string",
2674
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
2675
+ },
2676
+ "content": {
2677
+ "type": "string",
2678
+ "maxLength": 262144
2679
+ },
2680
+ "executable": {
2681
+ "type": "boolean",
2682
+ "default": false
2683
+ }
2684
+ },
2685
+ "required": [
2686
+ "name",
2687
+ "content"
2688
+ ],
2689
+ "additionalProperties": false
2690
+ }
2691
+ }
2692
+ },
2693
+ "required": [
2694
+ "steps"
2695
+ ],
2696
+ "additionalProperties": false
2697
+ }
2698
+ ```
2699
+
2700
+ ## `list_jobs`
2701
+
2702
+ **List managed jobs**
2703
+
2704
+ List recent detached managed jobs and their lifecycle status without returning step output.
2705
+
2706
+ | Contract field | Value |
2707
+ |---|---|
2708
+ | Availability | `always` |
2709
+ | Read-only hint | yes |
2710
+ | Destructive hint | no |
2711
+ | Idempotent hint | yes |
2712
+ | Open-world hint | no |
2713
+
2714
+ ### Input schema
2715
+
2716
+ ```json
2717
+ {
2718
+ "type": "object",
2719
+ "properties": {
2720
+ "limit": {
2721
+ "type": "integer",
2722
+ "minimum": 1,
2723
+ "maximum": 50,
2724
+ "default": 20
2725
+ }
2726
+ },
2727
+ "additionalProperties": false
2728
+ }
2729
+ ```
2730
+
2731
+ ## `read_job`
2732
+
2733
+ **Read managed job**
2734
+
2735
+ Return one managed job status plus bounded, resource-redacted step results. Registered resource paths and contents are never returned.
2736
+
2737
+ | Contract field | Value |
2738
+ |---|---|
2739
+ | Availability | `always` |
2740
+ | Read-only hint | yes |
2741
+ | Destructive hint | no |
2742
+ | Idempotent hint | yes |
2743
+ | Open-world hint | no |
2744
+
2745
+ ### Input schema
2746
+
2747
+ ```json
2748
+ {
2749
+ "type": "object",
2750
+ "properties": {
2751
+ "job_id": {
2752
+ "type": "string",
2753
+ "pattern": "^job_[A-Za-z0-9_-]{24,}$"
2754
+ }
2755
+ },
2756
+ "required": [
2757
+ "job_id"
2758
+ ],
2759
+ "additionalProperties": false
2760
+ }
2761
+ ```
2762
+
2763
+ ## `cancel_job`
2764
+
2765
+ **Cancel managed job**
2766
+
2767
+ Request cancellation of a detached managed job. The runner terminates the active process tree and still attempts declared finally steps and local resource cleanup.
2768
+
2769
+ | Contract field | Value |
2770
+ |---|---|
2771
+ | Availability | `write` |
2772
+ | Read-only hint | no |
2773
+ | Destructive hint | yes |
2774
+ | Idempotent hint | yes |
2775
+ | Open-world hint | yes |
2776
+
2777
+ ### Input schema
2778
+
2779
+ ```json
2780
+ {
2781
+ "type": "object",
2782
+ "properties": {
2783
+ "job_id": {
2784
+ "type": "string",
2785
+ "pattern": "^job_[A-Za-z0-9_-]{24,}$"
2786
+ }
2787
+ },
2788
+ "required": [
2789
+ "job_id"
2790
+ ],
2791
+ "additionalProperties": false
2792
+ }
2793
+ ```
2794
+
2795
+ ## `exec_command`
2796
+
2797
+ **Execute shell command**
2798
+
2799
+ Execute a shell command with workspace cwd. This is not a sandbox and has the operating-system authority of the local user.
2800
+
2801
+ | Contract field | Value |
2802
+ |---|---|
2803
+ | Availability | `shell-exec` |
2804
+ | Read-only hint | no |
2805
+ | Destructive hint | yes |
2806
+ | Idempotent hint | no |
2807
+ | Open-world hint | yes |
2808
+
2809
+ ### Input schema
2810
+
2811
+ ```json
2812
+ {
2813
+ "type": "object",
2814
+ "properties": {
2815
+ "command": {
2816
+ "type": "string",
2817
+ "minLength": 1,
2818
+ "maxLength": 65536
2819
+ },
2820
+ "timeout_seconds": {
2821
+ "type": "integer",
2822
+ "minimum": 1,
2823
+ "maximum": 600,
2824
+ "default": 120
2825
+ }
2826
+ },
2827
+ "required": [
2828
+ "command"
2829
+ ],
2830
+ "additionalProperties": false
2831
+ }
2832
+ ```
2833
+
2834
+ ## Change discipline
2835
+
2836
+ A catalog change must update its runtime handler and protocol tests in the same pull request. CI verifies catalog uniqueness, local/Worker use of the shared catalog, handler parity, generated policy documentation, and this generated reference.