@honua/mcp-server 0.1.9-beta.0 → 0.1.10-beta.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.
@@ -38,12 +38,41 @@
38
38
  "id": "install-local",
39
39
  "title": "Run the control-plane Docker installer",
40
40
  "kind": "cli",
41
- "args": ["admin", "install", "local", "--profile", "gp-dev", "--yes", "--directory", "${installDirectory}"],
41
+ "args": [
42
+ "admin",
43
+ "install",
44
+ "local",
45
+ "--profile",
46
+ "gp-dev",
47
+ "--yes",
48
+ "--directory",
49
+ "${installDirectory}"
50
+ ],
42
51
  "captures": [
43
- { "variable": "credentialId", "pointers": ["/accessCredential/id"] },
44
- { "variable": "credentialRequestedGrants", "pointers": ["/accessCredential/requestedGrants"] },
45
- { "variable": "credentialEffectiveGrants", "pointers": ["/accessCredential/effectiveGrants"] },
46
- { "variable": "credentialReferenceDigest", "pointers": ["/accessCredential/referenceDigestSha256"] }
52
+ {
53
+ "variable": "credentialId",
54
+ "pointers": [
55
+ "/accessCredential/id"
56
+ ]
57
+ },
58
+ {
59
+ "variable": "credentialRequestedGrants",
60
+ "pointers": [
61
+ "/accessCredential/requestedGrants"
62
+ ]
63
+ },
64
+ {
65
+ "variable": "credentialEffectiveGrants",
66
+ "pointers": [
67
+ "/accessCredential/effectiveGrants"
68
+ ]
69
+ },
70
+ {
71
+ "variable": "credentialReferenceDigest",
72
+ "pointers": [
73
+ "/accessCredential/referenceDigestSha256"
74
+ ]
75
+ }
47
76
  ],
48
77
  "forbiddenPointers": [
49
78
  "/accessCredential/material",
@@ -56,7 +85,13 @@
56
85
  "id": "install-status",
57
86
  "title": "Verify API, MCP, and Console readiness",
58
87
  "kind": "cli",
59
- "args": ["admin", "install", "status", "--directory", "${installDirectory}"]
88
+ "args": [
89
+ "admin",
90
+ "install",
91
+ "status",
92
+ "--directory",
93
+ "${installDirectory}"
94
+ ]
60
95
  }
61
96
  ]
62
97
  },
@@ -89,30 +124,48 @@
89
124
  "title": "Verify the provisioned credential identity and effective grants through MCP",
90
125
  "kind": "mcp",
91
126
  "tool": "honua_admin_api_key_effective_permissions",
92
- "arguments": { "id": "${credentialId}" },
127
+ "arguments": {
128
+ "id": "${credentialId}"
129
+ },
93
130
  "captures": [
94
131
  {
95
132
  "variable": "verifiedCredentialId",
96
- "pointers": ["/structuredContent/details/response"],
97
- "parsedPointers": ["/data/id"],
133
+ "pointers": [
134
+ "/structuredContent/details/response"
135
+ ],
136
+ "parsedPointers": [
137
+ "/data/id"
138
+ ],
98
139
  "equals": "${credentialId}"
99
140
  },
100
141
  {
101
142
  "variable": "verifiedCredentialStatus",
102
- "pointers": ["/structuredContent/details/response"],
103
- "parsedPointers": ["/data/status"],
143
+ "pointers": [
144
+ "/structuredContent/details/response"
145
+ ],
146
+ "parsedPointers": [
147
+ "/data/status"
148
+ ],
104
149
  "equals": "active"
105
150
  },
106
151
  {
107
152
  "variable": "verifiedCredentialCanAuthenticate",
108
- "pointers": ["/structuredContent/details/response"],
109
- "parsedPointers": ["/data/canAuthenticate"],
153
+ "pointers": [
154
+ "/structuredContent/details/response"
155
+ ],
156
+ "parsedPointers": [
157
+ "/data/canAuthenticate"
158
+ ],
110
159
  "equals": true
111
160
  },
112
161
  {
113
162
  "variable": "verifiedCredentialGrants",
114
- "pointers": ["/structuredContent/details/response"],
115
- "parsedPointers": ["/data/permissions"],
163
+ "pointers": [
164
+ "/structuredContent/details/response"
165
+ ],
166
+ "parsedPointers": [
167
+ "/data/permissions"
168
+ ],
116
169
  "equals": "${credentialEffectiveGrants}"
117
170
  }
118
171
  ],
@@ -144,8 +197,12 @@
144
197
  "captures": [
145
198
  {
146
199
  "variable": "connectionId",
147
- "pointers": ["/structuredContent/details/response"],
148
- "parsedPointers": ["/data/connectionId"]
200
+ "pointers": [
201
+ "/structuredContent/details/response"
202
+ ],
203
+ "parsedPointers": [
204
+ "/data/connectionId"
205
+ ]
149
206
  }
150
207
  ]
151
208
  },
@@ -154,7 +211,9 @@
154
211
  "title": "Test the saved connection",
155
212
  "kind": "mcp",
156
213
  "tool": "honua_admin_connection_test",
157
- "arguments": { "id": "${connectionId}" }
214
+ "arguments": {
215
+ "id": "${connectionId}"
216
+ }
158
217
  },
159
218
  {
160
219
  "id": "import-parcels",
@@ -212,8 +271,12 @@
212
271
  "captures": [
213
272
  {
214
273
  "variable": "parcelsLayerId",
215
- "pointers": ["/structuredContent/details/response"],
216
- "parsedPointers": ["/data/layerId"]
274
+ "pointers": [
275
+ "/structuredContent/details/response"
276
+ ],
277
+ "parsedPointers": [
278
+ "/data/layerId"
279
+ ]
217
280
  }
218
281
  ]
219
282
  },
@@ -239,8 +302,12 @@
239
302
  "captures": [
240
303
  {
241
304
  "variable": "zoningLayerId",
242
- "pointers": ["/structuredContent/details/response"],
243
- "parsedPointers": ["/data/layerId"]
305
+ "pointers": [
306
+ "/structuredContent/details/response"
307
+ ],
308
+ "parsedPointers": [
309
+ "/data/layerId"
310
+ ]
244
311
  }
245
312
  ]
246
313
  },
@@ -251,13 +318,178 @@
251
318
  "tool": "honua_admin_service_set_access_policy",
252
319
  "arguments": {
253
320
  "serviceName": "${serviceName}",
254
- "body": { "allowAnonymous": true, "allowAnonymousWrite": false }
321
+ "body": {
322
+ "allowAnonymous": true,
323
+ "allowAnonymousWrite": false
324
+ }
255
325
  }
256
326
  }
257
327
  ]
258
328
  },
259
329
  {
260
330
  "number": 3,
331
+ "id": "style",
332
+ "title": "Apply a canonical style to the published layer and prove it reaches rendered pixels",
333
+ "actions": [
334
+ {
335
+ "id": "read-published-style",
336
+ "title": "Read the published parcel layer's primary style before any preset is applied",
337
+ "kind": "mcp",
338
+ "tool": "honua_get_style",
339
+ "arguments": {
340
+ "serviceId": "${serviceName}",
341
+ "layerId": "${parcelsLayerId}",
342
+ "includeStylesheet": true
343
+ },
344
+ "captures": [
345
+ {
346
+ "variable": "baselineStyleVersion",
347
+ "pointers": [
348
+ "/structuredContent/styleVersion"
349
+ ]
350
+ }
351
+ ]
352
+ },
353
+ {
354
+ "id": "list-style-presets",
355
+ "title": "Discover the catalog style presets the candidate publishes",
356
+ "kind": "mcp",
357
+ "tool": "honua_get_style",
358
+ "arguments": {},
359
+ "captures": [
360
+ {
361
+ "variable": "discoveredStylePresetId",
362
+ "pointers": [
363
+ "/structuredContent/styles/0/styleId"
364
+ ]
365
+ }
366
+ ]
367
+ },
368
+ {
369
+ "id": "apply-canonical-style",
370
+ "title": "Apply the canonical preset as the published layer's primary style",
371
+ "kind": "mcp",
372
+ "tool": "honua_apply_style_preset",
373
+ "arguments": {
374
+ "serviceId": "${serviceName}",
375
+ "layerId": "${parcelsLayerId}",
376
+ "styleId": "${discoveredStylePresetId}"
377
+ },
378
+ "captures": [
379
+ {
380
+ "variable": "appliedStyleId",
381
+ "pointers": [
382
+ "/structuredContent/styleId"
383
+ ],
384
+ "equals": "${discoveredStylePresetId}"
385
+ },
386
+ {
387
+ "variable": "styleApplied",
388
+ "pointers": [
389
+ "/structuredContent/applied"
390
+ ],
391
+ "equals": true
392
+ },
393
+ {
394
+ "variable": "appliedStyleVersion",
395
+ "pointers": [
396
+ "/structuredContent/styleVersion"
397
+ ]
398
+ }
399
+ ]
400
+ },
401
+ {
402
+ "id": "confirm-published-style",
403
+ "title": "Re-read the published layer and confirm the preset is now its primary style",
404
+ "kind": "mcp",
405
+ "tool": "honua_get_style",
406
+ "arguments": {
407
+ "serviceId": "${serviceName}",
408
+ "layerId": "${parcelsLayerId}"
409
+ },
410
+ "captures": [
411
+ {
412
+ "variable": "confirmedStyleId",
413
+ "pointers": [
414
+ "/structuredContent/styleId"
415
+ ],
416
+ "equals": "${discoveredStylePresetId}"
417
+ },
418
+ {
419
+ "variable": "confirmedStyleVersion",
420
+ "pointers": [
421
+ "/structuredContent/styleVersion"
422
+ ],
423
+ "equals": "${appliedStyleVersion}"
424
+ }
425
+ ]
426
+ },
427
+ {
428
+ "id": "render-published-map",
429
+ "title": "Render the published, canonically styled layer to a PNG artifact at the fixture extent",
430
+ "kind": "mcp",
431
+ "tool": "honua_render_map",
432
+ "arguments": {
433
+ "layers": [
434
+ {
435
+ "serviceId": "${serviceName}",
436
+ "layerId": "${parcelsLayerId}"
437
+ }
438
+ ],
439
+ "bbox": [
440
+ -157.862,
441
+ 21.3064,
442
+ -157.8595,
443
+ 21.3083
444
+ ],
445
+ "bboxSrid": 4326,
446
+ "width": 512,
447
+ "height": 512
448
+ },
449
+ "captures": [
450
+ {
451
+ "variable": "renderedStyleId",
452
+ "pointers": [
453
+ "/structuredContent/layers/0/styleId"
454
+ ],
455
+ "equals": "${discoveredStylePresetId}"
456
+ },
457
+ {
458
+ "variable": "renderWidth",
459
+ "pointers": [
460
+ "/structuredContent/image/width"
461
+ ],
462
+ "equals": 512
463
+ },
464
+ {
465
+ "variable": "renderHeight",
466
+ "pointers": [
467
+ "/structuredContent/image/height"
468
+ ],
469
+ "equals": 512
470
+ },
471
+ {
472
+ "variable": "renderImageUri",
473
+ "pointers": [
474
+ "/structuredContent/image/uri"
475
+ ]
476
+ }
477
+ ]
478
+ },
479
+ {
480
+ "id": "read-rendered-map",
481
+ "title": "Fetch the rendered artifact and validate it is a non-empty PNG of the reported size",
482
+ "kind": "mcp-image",
483
+ "uri": "${renderImageUri}",
484
+ "expectedMediaType": "image/png",
485
+ "expectedWidth": "${renderWidth}",
486
+ "expectedHeight": "${renderHeight}",
487
+ "minByteLength": 1024
488
+ }
489
+ ]
490
+ },
491
+ {
492
+ "number": 4,
261
493
  "id": "geoprocessing",
262
494
  "title": "Execute Buffer through AI-facing Esri MCP, GPServer compatibility, and direct analysis",
263
495
  "actions": [
@@ -268,7 +500,12 @@
268
500
  "tool": "honua_esri_gp_list_tasks",
269
501
  "arguments": {},
270
502
  "captures": [
271
- { "variable": "esriGpTasks", "pointers": ["/structuredContent/tasks"] }
503
+ {
504
+ "variable": "esriGpTasks",
505
+ "pointers": [
506
+ "/structuredContent/tasks"
507
+ ]
508
+ }
272
509
  ]
273
510
  },
274
511
  {
@@ -276,10 +513,24 @@
276
513
  "title": "Resolve the Esri Buffer alias to the canonical process",
277
514
  "kind": "mcp",
278
515
  "tool": "honua_esri_gp_describe_task",
279
- "arguments": { "taskName": "Buffer" },
516
+ "arguments": {
517
+ "taskName": "Buffer"
518
+ },
280
519
  "captures": [
281
- { "variable": "esriGpTaskName", "pointers": ["/structuredContent/taskName"], "equals": "Buffer" },
282
- { "variable": "esriGpProcessId", "pointers": ["/structuredContent/processId"], "equals": "geometry.buffer" }
520
+ {
521
+ "variable": "esriGpTaskName",
522
+ "pointers": [
523
+ "/structuredContent/taskName"
524
+ ],
525
+ "equals": "Buffer"
526
+ },
527
+ {
528
+ "variable": "esriGpProcessId",
529
+ "pointers": [
530
+ "/structuredContent/processId"
531
+ ],
532
+ "equals": "geometry.buffer"
533
+ }
283
534
  ]
284
535
  },
285
536
  {
@@ -293,18 +544,37 @@
293
544
  "parameters": {
294
545
  "wkb": {
295
546
  "geometryType": "esriGeometryPolygon",
296
- "spatialReference": { "wkid": 4326 },
547
+ "spatialReference": {
548
+ "wkid": 4326
549
+ },
297
550
  "features": [
298
551
  {
299
- "attributes": { "parcel_id": "P-101" },
552
+ "attributes": {
553
+ "parcel_id": "P-101"
554
+ },
300
555
  "geometry": {
301
556
  "rings": [
302
557
  [
303
- [-157.8616, 21.3067],
304
- [-157.8608, 21.3067],
305
- [-157.8608, 21.3073],
306
- [-157.8616, 21.3073],
307
- [-157.8616, 21.3067]
558
+ [
559
+ -157.8616,
560
+ 21.3067
561
+ ],
562
+ [
563
+ -157.8608,
564
+ 21.3067
565
+ ],
566
+ [
567
+ -157.8608,
568
+ 21.3073
569
+ ],
570
+ [
571
+ -157.8616,
572
+ 21.3073
573
+ ],
574
+ [
575
+ -157.8616,
576
+ 21.3067
577
+ ]
308
578
  ]
309
579
  ]
310
580
  }
@@ -316,10 +586,33 @@
316
586
  "idempotencyKey": "2026.1-zero-to-map-esri-buffer"
317
587
  },
318
588
  "captures": [
319
- { "variable": "esriMcpJobId", "pointers": ["/structuredContent/jobId"] },
320
- { "variable": "esriMcpServiceId", "pointers": ["/structuredContent/serviceId"], "equals": "analysis" },
321
- { "variable": "esriMcpTaskName", "pointers": ["/structuredContent/taskName"], "equals": "Buffer" },
322
- { "variable": "esriMcpProcessId", "pointers": ["/structuredContent/processId"], "equals": "geometry.buffer" }
589
+ {
590
+ "variable": "esriMcpJobId",
591
+ "pointers": [
592
+ "/structuredContent/jobId"
593
+ ]
594
+ },
595
+ {
596
+ "variable": "esriMcpServiceId",
597
+ "pointers": [
598
+ "/structuredContent/serviceId"
599
+ ],
600
+ "equals": "analysis"
601
+ },
602
+ {
603
+ "variable": "esriMcpTaskName",
604
+ "pointers": [
605
+ "/structuredContent/taskName"
606
+ ],
607
+ "equals": "Buffer"
608
+ },
609
+ {
610
+ "variable": "esriMcpProcessId",
611
+ "pointers": [
612
+ "/structuredContent/processId"
613
+ ],
614
+ "equals": "geometry.buffer"
615
+ }
323
616
  ]
324
617
  },
325
618
  {
@@ -330,15 +623,23 @@
330
623
  "waitFor": {
331
624
  "pointer": "/status",
332
625
  "equals": "Succeeded",
333
- "terminal": ["Succeeded", "Failed", "Cancelled"],
626
+ "terminal": [
627
+ "Succeeded",
628
+ "Failed",
629
+ "Cancelled"
630
+ ],
334
631
  "pollIntervalMs": 500,
335
632
  "deadlineMs": 120000
336
633
  },
337
634
  "captures": [
338
635
  {
339
636
  "variable": "esriMcpResultsUri",
340
- "pointers": ["/contents/0/text"],
341
- "parsedPointers": ["/resultsUri"]
637
+ "pointers": [
638
+ "/contents/0/text"
639
+ ],
640
+ "parsedPointers": [
641
+ "/resultsUri"
642
+ ]
342
643
  }
343
644
  ]
344
645
  },
@@ -350,19 +651,31 @@
350
651
  "captures": [
351
652
  {
352
653
  "variable": "esriMcpResultJobId",
353
- "pointers": ["/contents/0/text"],
354
- "parsedPointers": ["/jobId"],
654
+ "pointers": [
655
+ "/contents/0/text"
656
+ ],
657
+ "parsedPointers": [
658
+ "/jobId"
659
+ ],
355
660
  "equals": "${esriMcpJobId}"
356
661
  },
357
662
  {
358
663
  "variable": "esriMcpResultPackageId",
359
- "pointers": ["/contents/0/text"],
360
- "parsedPointers": ["/resultPackageId"]
664
+ "pointers": [
665
+ "/contents/0/text"
666
+ ],
667
+ "parsedPointers": [
668
+ "/resultPackageId"
669
+ ]
361
670
  },
362
671
  {
363
672
  "variable": "esriMcpArtifactId",
364
- "pointers": ["/contents/0/text"],
365
- "parsedPointers": ["/artifacts/0/artifactId"]
673
+ "pointers": [
674
+ "/contents/0/text"
675
+ ],
676
+ "parsedPointers": [
677
+ "/artifacts/0/artifactId"
678
+ ]
366
679
  }
367
680
  ]
368
681
  },
@@ -378,9 +691,16 @@
378
691
  "srid": 4326,
379
692
  "distance": 0.00025
380
693
  },
381
- "resultNames": ["outputFeatureLayer"],
694
+ "resultNames": [
695
+ "outputFeatureLayer"
696
+ ],
382
697
  "captures": [
383
- { "variable": "gpServerJobId", "pointers": ["/jobId"] }
698
+ {
699
+ "variable": "gpServerJobId",
700
+ "pointers": [
701
+ "/jobId"
702
+ ]
703
+ }
384
704
  ]
385
705
  },
386
706
  {
@@ -389,7 +709,10 @@
389
709
  "kind": "mcp",
390
710
  "tool": "honua_buffer_features",
391
711
  "arguments": {
392
- "source": { "serviceId": "${serviceName}", "layerId": "${parcelsLayerId}" },
712
+ "source": {
713
+ "serviceId": "${serviceName}",
714
+ "layerId": "${parcelsLayerId}"
715
+ },
393
716
  "distance": 25,
394
717
  "unit": "meters",
395
718
  "dissolve": false,
@@ -398,7 +721,9 @@
398
721
  "captures": [
399
722
  {
400
723
  "variable": "directAnalysisJobId",
401
- "pointers": ["/structuredContent/jobId"]
724
+ "pointers": [
725
+ "/structuredContent/jobId"
726
+ ]
402
727
  }
403
728
  ]
404
729
  },
@@ -410,15 +735,23 @@
410
735
  "waitFor": {
411
736
  "pointer": "/status",
412
737
  "equals": "Succeeded",
413
- "terminal": ["Succeeded", "Failed", "Cancelled"],
738
+ "terminal": [
739
+ "Succeeded",
740
+ "Failed",
741
+ "Cancelled"
742
+ ],
414
743
  "pollIntervalMs": 500,
415
744
  "deadlineMs": 120000
416
745
  },
417
746
  "captures": [
418
747
  {
419
748
  "variable": "directAnalysisResultsUri",
420
- "pointers": ["/contents/0/text"],
421
- "parsedPointers": ["/resultsUri"]
749
+ "pointers": [
750
+ "/contents/0/text"
751
+ ],
752
+ "parsedPointers": [
753
+ "/resultsUri"
754
+ ]
422
755
  }
423
756
  ]
424
757
  },
@@ -430,21 +763,29 @@
430
763
  "captures": [
431
764
  {
432
765
  "variable": "directAnalysisResultJobId",
433
- "pointers": ["/contents/0/text"],
434
- "parsedPointers": ["/jobId"],
766
+ "pointers": [
767
+ "/contents/0/text"
768
+ ],
769
+ "parsedPointers": [
770
+ "/jobId"
771
+ ],
435
772
  "equals": "${directAnalysisJobId}"
436
773
  },
437
774
  {
438
775
  "variable": "bufferArtifactId",
439
- "pointers": ["/contents/0/text"],
440
- "parsedPointers": ["/artifacts/0/artifactId"]
776
+ "pointers": [
777
+ "/contents/0/text"
778
+ ],
779
+ "parsedPointers": [
780
+ "/artifacts/0/artifactId"
781
+ ]
441
782
  }
442
783
  ]
443
784
  }
444
785
  ]
445
786
  },
446
787
  {
447
- "number": 4,
788
+ "number": 5,
448
789
  "id": "studio",
449
790
  "title": "Compose, validate, save, read, and reopen distinct map, app, and dashboard families",
450
791
  "actions": [
@@ -471,9 +812,24 @@
471
812
  }
472
813
  },
473
814
  "captures": [
474
- { "variable": "mapDraftId", "pointers": ["/structuredContent/draftId"] },
475
- { "variable": "mapItemId", "pointers": ["/structuredContent/itemId"] },
476
- { "variable": "mapGeneration", "pointers": ["/structuredContent/generation"] }
815
+ {
816
+ "variable": "mapDraftId",
817
+ "pointers": [
818
+ "/structuredContent/draftId"
819
+ ]
820
+ },
821
+ {
822
+ "variable": "mapItemId",
823
+ "pointers": [
824
+ "/structuredContent/itemId"
825
+ ]
826
+ },
827
+ {
828
+ "variable": "mapGeneration",
829
+ "pointers": [
830
+ "/structuredContent/generation"
831
+ ]
832
+ }
477
833
  ]
478
834
  },
479
835
  {
@@ -492,7 +848,14 @@
492
848
  "visible": true
493
849
  }
494
850
  },
495
- "captures": [{ "variable": "mapGeneration", "pointers": ["/structuredContent/generation"] }]
851
+ "captures": [
852
+ {
853
+ "variable": "mapGeneration",
854
+ "pointers": [
855
+ "/structuredContent/generation"
856
+ ]
857
+ }
858
+ ]
496
859
  },
497
860
  {
498
861
  "id": "add-map-buffer-layer",
@@ -510,7 +873,14 @@
510
873
  "visible": true
511
874
  }
512
875
  },
513
- "captures": [{ "variable": "mapGeneration", "pointers": ["/structuredContent/generation"] }]
876
+ "captures": [
877
+ {
878
+ "variable": "mapGeneration",
879
+ "pointers": [
880
+ "/structuredContent/generation"
881
+ ]
882
+ }
883
+ ]
514
884
  },
515
885
  {
516
886
  "id": "style-map-buffer-layer",
@@ -523,7 +893,14 @@
523
893
  "layerId": "parcel-buffer",
524
894
  "styleRef": "zero-to-map-buffer"
525
895
  },
526
- "captures": [{ "variable": "mapGeneration", "pointers": ["/structuredContent/generation"] }]
896
+ "captures": [
897
+ {
898
+ "variable": "mapGeneration",
899
+ "pointers": [
900
+ "/structuredContent/generation"
901
+ ]
902
+ }
903
+ ]
527
904
  },
528
905
  {
529
906
  "id": "set-map-buffer-visibility",
@@ -536,7 +913,14 @@
536
913
  "layerId": "parcel-buffer",
537
914
  "visible": true
538
915
  },
539
- "captures": [{ "variable": "mapGeneration", "pointers": ["/structuredContent/generation"] }]
916
+ "captures": [
917
+ {
918
+ "variable": "mapGeneration",
919
+ "pointers": [
920
+ "/structuredContent/generation"
921
+ ]
922
+ }
923
+ ]
540
924
  },
541
925
  {
542
926
  "id": "set-map-view",
@@ -546,9 +930,24 @@
546
930
  "arguments": {
547
931
  "draftId": "${mapDraftId}",
548
932
  "generation": "${mapGeneration}",
549
- "view": { "bbox": [-157.862, 21.3064, -157.8595, 21.3083], "crs": "EPSG:4326" }
933
+ "view": {
934
+ "bbox": [
935
+ -157.862,
936
+ 21.3064,
937
+ -157.8595,
938
+ 21.3083
939
+ ],
940
+ "crs": "EPSG:4326"
941
+ }
550
942
  },
551
- "captures": [{ "variable": "mapGeneration", "pointers": ["/structuredContent/generation"] }]
943
+ "captures": [
944
+ {
945
+ "variable": "mapGeneration",
946
+ "pointers": [
947
+ "/structuredContent/generation"
948
+ ]
949
+ }
950
+ ]
552
951
  },
553
952
  {
554
953
  "id": "add-map-widget",
@@ -563,10 +962,21 @@
563
962
  "kind": "chart",
564
963
  "title": "Assessed value by zone",
565
964
  "sourceId": "parcels",
566
- "config": { "categoryField": "zone", "valueField": "assessed_value", "aggregate": "sum" }
965
+ "config": {
966
+ "categoryField": "zone",
967
+ "valueField": "assessed_value",
968
+ "aggregate": "sum"
969
+ }
567
970
  }
568
971
  },
569
- "captures": [{ "variable": "mapGeneration", "pointers": ["/structuredContent/generation"] }]
972
+ "captures": [
973
+ {
974
+ "variable": "mapGeneration",
975
+ "pointers": [
976
+ "/structuredContent/generation"
977
+ ]
978
+ }
979
+ ]
570
980
  },
571
981
  {
572
982
  "id": "add-map-control",
@@ -576,16 +986,30 @@
576
986
  "arguments": {
577
987
  "draftId": "${mapDraftId}",
578
988
  "generation": "${mapGeneration}",
579
- "control": { "id": "layers", "kind": "layer-list", "title": "Layers", "sourceId": "parcels" }
989
+ "control": {
990
+ "id": "layers",
991
+ "kind": "layer-list",
992
+ "title": "Layers",
993
+ "sourceId": "parcels"
994
+ }
580
995
  },
581
- "captures": [{ "variable": "mapGeneration", "pointers": ["/structuredContent/generation"] }]
996
+ "captures": [
997
+ {
998
+ "variable": "mapGeneration",
999
+ "pointers": [
1000
+ "/structuredContent/generation"
1001
+ ]
1002
+ }
1003
+ ]
582
1004
  },
583
1005
  {
584
1006
  "id": "validate-map-draft",
585
1007
  "title": "Validate the composed map draft",
586
1008
  "kind": "mcp",
587
1009
  "tool": "honua_studio_validate_draft",
588
- "arguments": { "draftId": "${mapDraftId}" }
1010
+ "arguments": {
1011
+ "draftId": "${mapDraftId}"
1012
+ }
589
1013
  },
590
1014
  {
591
1015
  "id": "save-map-version",
@@ -598,10 +1022,31 @@
598
1022
  "changeNote": "2026.1 zero-to-map map"
599
1023
  },
600
1024
  "captures": [
601
- { "variable": "savedMapItemId", "pointers": ["/structuredContent/itemId"], "equals": "${mapItemId}" },
602
- { "variable": "mapVersionId", "pointers": ["/structuredContent/versionId"] },
603
- { "variable": "mapVersionNumber", "pointers": ["/structuredContent/versionNumber"] },
604
- { "variable": "mapContentHash", "pointers": ["/structuredContent/contentHash"] }
1025
+ {
1026
+ "variable": "savedMapItemId",
1027
+ "pointers": [
1028
+ "/structuredContent/itemId"
1029
+ ],
1030
+ "equals": "${mapItemId}"
1031
+ },
1032
+ {
1033
+ "variable": "mapVersionId",
1034
+ "pointers": [
1035
+ "/structuredContent/versionId"
1036
+ ]
1037
+ },
1038
+ {
1039
+ "variable": "mapVersionNumber",
1040
+ "pointers": [
1041
+ "/structuredContent/versionNumber"
1042
+ ]
1043
+ },
1044
+ {
1045
+ "variable": "mapContentHash",
1046
+ "pointers": [
1047
+ "/structuredContent/contentHash"
1048
+ ]
1049
+ }
605
1050
  ]
606
1051
  },
607
1052
  {
@@ -609,10 +1054,25 @@
609
1054
  "title": "Read the exact immutable map version",
610
1055
  "kind": "mcp",
611
1056
  "tool": "honua_studio_get_version",
612
- "arguments": { "itemId": "${mapItemId}", "versionId": "${mapVersionId}" },
1057
+ "arguments": {
1058
+ "itemId": "${mapItemId}",
1059
+ "versionId": "${mapVersionId}"
1060
+ },
613
1061
  "captures": [
614
- { "variable": "loadedMapVersionId", "pointers": ["/structuredContent/versionId"], "equals": "${mapVersionId}" },
615
- { "variable": "loadedMapContentHash", "pointers": ["/structuredContent/contentHash"], "equals": "${mapContentHash}" }
1062
+ {
1063
+ "variable": "loadedMapVersionId",
1064
+ "pointers": [
1065
+ "/structuredContent/versionId"
1066
+ ],
1067
+ "equals": "${mapVersionId}"
1068
+ },
1069
+ {
1070
+ "variable": "loadedMapContentHash",
1071
+ "pointers": [
1072
+ "/structuredContent/contentHash"
1073
+ ],
1074
+ "equals": "${mapContentHash}"
1075
+ }
616
1076
  ]
617
1077
  },
618
1078
  {
@@ -620,12 +1080,37 @@
620
1080
  "title": "Reopen the immutable map version as a new draft",
621
1081
  "kind": "mcp",
622
1082
  "tool": "honua_studio_reopen_version",
623
- "arguments": { "itemId": "${mapItemId}", "versionId": "${mapVersionId}" },
1083
+ "arguments": {
1084
+ "itemId": "${mapItemId}",
1085
+ "versionId": "${mapVersionId}"
1086
+ },
624
1087
  "captures": [
625
- { "variable": "mapReopenedDraftId", "pointers": ["/structuredContent/draftId"] },
626
- { "variable": "mapReopenedItemId", "pointers": ["/structuredContent/itemId"], "equals": "${mapItemId}" },
627
- { "variable": "mapReopenedBaseVersionId", "pointers": ["/structuredContent/baseVersionId"], "equals": "${mapVersionId}" },
628
- { "variable": "mapReopenedGeneration", "pointers": ["/structuredContent/generation"] }
1088
+ {
1089
+ "variable": "mapReopenedDraftId",
1090
+ "pointers": [
1091
+ "/structuredContent/draftId"
1092
+ ]
1093
+ },
1094
+ {
1095
+ "variable": "mapReopenedItemId",
1096
+ "pointers": [
1097
+ "/structuredContent/itemId"
1098
+ ],
1099
+ "equals": "${mapItemId}"
1100
+ },
1101
+ {
1102
+ "variable": "mapReopenedBaseVersionId",
1103
+ "pointers": [
1104
+ "/structuredContent/baseVersionId"
1105
+ ],
1106
+ "equals": "${mapVersionId}"
1107
+ },
1108
+ {
1109
+ "variable": "mapReopenedGeneration",
1110
+ "pointers": [
1111
+ "/structuredContent/generation"
1112
+ ]
1113
+ }
629
1114
  ]
630
1115
  },
631
1116
  {
@@ -645,15 +1130,34 @@
645
1130
  "generatedFiles": [],
646
1131
  "assetManifest": [],
647
1132
  "mapPackageId": "map-zero-to-map",
648
- "sharePolicy": { "visibility": "private", "embed": false, "reviewed": false },
1133
+ "sharePolicy": {
1134
+ "visibility": "private",
1135
+ "embed": false,
1136
+ "reviewed": false
1137
+ },
649
1138
  "boundArtifacts": [],
650
1139
  "createdAt": "2026-08-20T00:00:00Z"
651
1140
  }
652
1141
  },
653
1142
  "captures": [
654
- { "variable": "appDraftId", "pointers": ["/structuredContent/draftId"] },
655
- { "variable": "appItemId", "pointers": ["/structuredContent/itemId"] },
656
- { "variable": "appGeneration", "pointers": ["/structuredContent/generation"] }
1143
+ {
1144
+ "variable": "appDraftId",
1145
+ "pointers": [
1146
+ "/structuredContent/draftId"
1147
+ ]
1148
+ },
1149
+ {
1150
+ "variable": "appItemId",
1151
+ "pointers": [
1152
+ "/structuredContent/itemId"
1153
+ ]
1154
+ },
1155
+ {
1156
+ "variable": "appGeneration",
1157
+ "pointers": [
1158
+ "/structuredContent/generation"
1159
+ ]
1160
+ }
657
1161
  ]
658
1162
  },
659
1163
  {
@@ -672,7 +1176,14 @@
672
1176
  "visible": true
673
1177
  }
674
1178
  },
675
- "captures": [{ "variable": "appGeneration", "pointers": ["/structuredContent/generation"] }]
1179
+ "captures": [
1180
+ {
1181
+ "variable": "appGeneration",
1182
+ "pointers": [
1183
+ "/structuredContent/generation"
1184
+ ]
1185
+ }
1186
+ ]
676
1187
  },
677
1188
  {
678
1189
  "id": "add-app-buffer-layer",
@@ -690,7 +1201,14 @@
690
1201
  "visible": true
691
1202
  }
692
1203
  },
693
- "captures": [{ "variable": "appGeneration", "pointers": ["/structuredContent/generation"] }]
1204
+ "captures": [
1205
+ {
1206
+ "variable": "appGeneration",
1207
+ "pointers": [
1208
+ "/structuredContent/generation"
1209
+ ]
1210
+ }
1211
+ ]
694
1212
  },
695
1213
  {
696
1214
  "id": "style-app-buffer-layer",
@@ -703,7 +1221,14 @@
703
1221
  "layerId": "parcel-buffer",
704
1222
  "styleRef": "zero-to-map-buffer"
705
1223
  },
706
- "captures": [{ "variable": "appGeneration", "pointers": ["/structuredContent/generation"] }]
1224
+ "captures": [
1225
+ {
1226
+ "variable": "appGeneration",
1227
+ "pointers": [
1228
+ "/structuredContent/generation"
1229
+ ]
1230
+ }
1231
+ ]
707
1232
  },
708
1233
  {
709
1234
  "id": "set-app-view",
@@ -713,9 +1238,24 @@
713
1238
  "arguments": {
714
1239
  "draftId": "${appDraftId}",
715
1240
  "generation": "${appGeneration}",
716
- "view": { "bbox": [-157.862, 21.3064, -157.8595, 21.3083], "crs": "EPSG:4326" }
1241
+ "view": {
1242
+ "bbox": [
1243
+ -157.862,
1244
+ 21.3064,
1245
+ -157.8595,
1246
+ 21.3083
1247
+ ],
1248
+ "crs": "EPSG:4326"
1249
+ }
717
1250
  },
718
- "captures": [{ "variable": "appGeneration", "pointers": ["/structuredContent/generation"] }]
1251
+ "captures": [
1252
+ {
1253
+ "variable": "appGeneration",
1254
+ "pointers": [
1255
+ "/structuredContent/generation"
1256
+ ]
1257
+ }
1258
+ ]
719
1259
  },
720
1260
  {
721
1261
  "id": "add-app-chart",
@@ -730,10 +1270,21 @@
730
1270
  "kind": "chart",
731
1271
  "title": "Assessed value by zone",
732
1272
  "sourceId": "parcels",
733
- "config": { "categoryField": "zone", "valueField": "assessed_value", "aggregate": "sum" }
1273
+ "config": {
1274
+ "categoryField": "zone",
1275
+ "valueField": "assessed_value",
1276
+ "aggregate": "sum"
1277
+ }
734
1278
  }
735
1279
  },
736
- "captures": [{ "variable": "appGeneration", "pointers": ["/structuredContent/generation"] }]
1280
+ "captures": [
1281
+ {
1282
+ "variable": "appGeneration",
1283
+ "pointers": [
1284
+ "/structuredContent/generation"
1285
+ ]
1286
+ }
1287
+ ]
737
1288
  },
738
1289
  {
739
1290
  "id": "add-app-layer-control",
@@ -743,9 +1294,21 @@
743
1294
  "arguments": {
744
1295
  "draftId": "${appDraftId}",
745
1296
  "generation": "${appGeneration}",
746
- "control": { "id": "layers", "kind": "layer-list", "title": "Layers", "sourceId": "parcels" }
1297
+ "control": {
1298
+ "id": "layers",
1299
+ "kind": "layer-list",
1300
+ "title": "Layers",
1301
+ "sourceId": "parcels"
1302
+ }
747
1303
  },
748
- "captures": [{ "variable": "appGeneration", "pointers": ["/structuredContent/generation"] }]
1304
+ "captures": [
1305
+ {
1306
+ "variable": "appGeneration",
1307
+ "pointers": [
1308
+ "/structuredContent/generation"
1309
+ ]
1310
+ }
1311
+ ]
749
1312
  },
750
1313
  {
751
1314
  "id": "bind-app-chart-interaction",
@@ -757,18 +1320,36 @@
757
1320
  "generation": "${appGeneration}",
758
1321
  "interaction": {
759
1322
  "id": "filter-parcels-by-zone",
760
- "on": { "ref": "widget:value-by-zone", "event": "select" },
761
- "do": { "ref": "layer:parcels", "verb": "filter", "args": { "where": "zone = '$event.value'" } }
1323
+ "on": {
1324
+ "ref": "widget:value-by-zone",
1325
+ "event": "select"
1326
+ },
1327
+ "do": {
1328
+ "ref": "layer:parcels",
1329
+ "verb": "filter",
1330
+ "args": {
1331
+ "where": "zone = '$event.value'"
1332
+ }
1333
+ }
762
1334
  }
763
1335
  },
764
- "captures": [{ "variable": "appGeneration", "pointers": ["/structuredContent/generation"] }]
1336
+ "captures": [
1337
+ {
1338
+ "variable": "appGeneration",
1339
+ "pointers": [
1340
+ "/structuredContent/generation"
1341
+ ]
1342
+ }
1343
+ ]
765
1344
  },
766
1345
  {
767
1346
  "id": "validate-app-draft",
768
1347
  "title": "Validate the composed app draft",
769
1348
  "kind": "mcp",
770
1349
  "tool": "honua_studio_validate_draft",
771
- "arguments": { "draftId": "${appDraftId}" }
1350
+ "arguments": {
1351
+ "draftId": "${appDraftId}"
1352
+ }
772
1353
  },
773
1354
  {
774
1355
  "id": "save-app-version",
@@ -781,10 +1362,31 @@
781
1362
  "changeNote": "2026.1 zero-to-map app"
782
1363
  },
783
1364
  "captures": [
784
- { "variable": "savedAppItemId", "pointers": ["/structuredContent/itemId"], "equals": "${appItemId}" },
785
- { "variable": "appVersionId", "pointers": ["/structuredContent/versionId"] },
786
- { "variable": "appVersionNumber", "pointers": ["/structuredContent/versionNumber"] },
787
- { "variable": "appContentHash", "pointers": ["/structuredContent/contentHash"] }
1365
+ {
1366
+ "variable": "savedAppItemId",
1367
+ "pointers": [
1368
+ "/structuredContent/itemId"
1369
+ ],
1370
+ "equals": "${appItemId}"
1371
+ },
1372
+ {
1373
+ "variable": "appVersionId",
1374
+ "pointers": [
1375
+ "/structuredContent/versionId"
1376
+ ]
1377
+ },
1378
+ {
1379
+ "variable": "appVersionNumber",
1380
+ "pointers": [
1381
+ "/structuredContent/versionNumber"
1382
+ ]
1383
+ },
1384
+ {
1385
+ "variable": "appContentHash",
1386
+ "pointers": [
1387
+ "/structuredContent/contentHash"
1388
+ ]
1389
+ }
788
1390
  ]
789
1391
  },
790
1392
  {
@@ -792,10 +1394,25 @@
792
1394
  "title": "Read the exact immutable app version",
793
1395
  "kind": "mcp",
794
1396
  "tool": "honua_studio_get_version",
795
- "arguments": { "itemId": "${appItemId}", "versionId": "${appVersionId}" },
1397
+ "arguments": {
1398
+ "itemId": "${appItemId}",
1399
+ "versionId": "${appVersionId}"
1400
+ },
796
1401
  "captures": [
797
- { "variable": "loadedAppVersionId", "pointers": ["/structuredContent/versionId"], "equals": "${appVersionId}" },
798
- { "variable": "loadedAppContentHash", "pointers": ["/structuredContent/contentHash"], "equals": "${appContentHash}" }
1402
+ {
1403
+ "variable": "loadedAppVersionId",
1404
+ "pointers": [
1405
+ "/structuredContent/versionId"
1406
+ ],
1407
+ "equals": "${appVersionId}"
1408
+ },
1409
+ {
1410
+ "variable": "loadedAppContentHash",
1411
+ "pointers": [
1412
+ "/structuredContent/contentHash"
1413
+ ],
1414
+ "equals": "${appContentHash}"
1415
+ }
799
1416
  ]
800
1417
  },
801
1418
  {
@@ -803,12 +1420,37 @@
803
1420
  "title": "Reopen the immutable app version as a new draft",
804
1421
  "kind": "mcp",
805
1422
  "tool": "honua_studio_reopen_version",
806
- "arguments": { "itemId": "${appItemId}", "versionId": "${appVersionId}" },
1423
+ "arguments": {
1424
+ "itemId": "${appItemId}",
1425
+ "versionId": "${appVersionId}"
1426
+ },
807
1427
  "captures": [
808
- { "variable": "appReopenedDraftId", "pointers": ["/structuredContent/draftId"] },
809
- { "variable": "appReopenedItemId", "pointers": ["/structuredContent/itemId"], "equals": "${appItemId}" },
810
- { "variable": "appReopenedBaseVersionId", "pointers": ["/structuredContent/baseVersionId"], "equals": "${appVersionId}" },
811
- { "variable": "appReopenedGeneration", "pointers": ["/structuredContent/generation"] }
1428
+ {
1429
+ "variable": "appReopenedDraftId",
1430
+ "pointers": [
1431
+ "/structuredContent/draftId"
1432
+ ]
1433
+ },
1434
+ {
1435
+ "variable": "appReopenedItemId",
1436
+ "pointers": [
1437
+ "/structuredContent/itemId"
1438
+ ],
1439
+ "equals": "${appItemId}"
1440
+ },
1441
+ {
1442
+ "variable": "appReopenedBaseVersionId",
1443
+ "pointers": [
1444
+ "/structuredContent/baseVersionId"
1445
+ ],
1446
+ "equals": "${appVersionId}"
1447
+ },
1448
+ {
1449
+ "variable": "appReopenedGeneration",
1450
+ "pointers": [
1451
+ "/structuredContent/generation"
1452
+ ]
1453
+ }
812
1454
  ]
813
1455
  },
814
1456
  {
@@ -822,13 +1464,31 @@
822
1464
  "schemaVersion": "1.0",
823
1465
  "body": {
824
1466
  "title": "Parcel assessment dashboard",
825
- "map": { "itemId": "${mapItemId}", "versionId": "${mapVersionId}" }
1467
+ "map": {
1468
+ "itemId": "${mapItemId}",
1469
+ "versionId": "${mapVersionId}"
1470
+ }
826
1471
  }
827
1472
  },
828
1473
  "captures": [
829
- { "variable": "dashboardDraftId", "pointers": ["/structuredContent/draftId"] },
830
- { "variable": "dashboardItemId", "pointers": ["/structuredContent/itemId"] },
831
- { "variable": "dashboardGeneration", "pointers": ["/structuredContent/generation"] }
1474
+ {
1475
+ "variable": "dashboardDraftId",
1476
+ "pointers": [
1477
+ "/structuredContent/draftId"
1478
+ ]
1479
+ },
1480
+ {
1481
+ "variable": "dashboardItemId",
1482
+ "pointers": [
1483
+ "/structuredContent/itemId"
1484
+ ]
1485
+ },
1486
+ {
1487
+ "variable": "dashboardGeneration",
1488
+ "pointers": [
1489
+ "/structuredContent/generation"
1490
+ ]
1491
+ }
832
1492
  ]
833
1493
  },
834
1494
  {
@@ -847,7 +1507,14 @@
847
1507
  "visible": true
848
1508
  }
849
1509
  },
850
- "captures": [{ "variable": "dashboardGeneration", "pointers": ["/structuredContent/generation"] }]
1510
+ "captures": [
1511
+ {
1512
+ "variable": "dashboardGeneration",
1513
+ "pointers": [
1514
+ "/structuredContent/generation"
1515
+ ]
1516
+ }
1517
+ ]
851
1518
  },
852
1519
  {
853
1520
  "id": "style-dashboard-buffer-layer",
@@ -860,7 +1527,14 @@
860
1527
  "layerId": "parcel-buffer",
861
1528
  "styleRef": "zero-to-map-buffer"
862
1529
  },
863
- "captures": [{ "variable": "dashboardGeneration", "pointers": ["/structuredContent/generation"] }]
1530
+ "captures": [
1531
+ {
1532
+ "variable": "dashboardGeneration",
1533
+ "pointers": [
1534
+ "/structuredContent/generation"
1535
+ ]
1536
+ }
1537
+ ]
864
1538
  },
865
1539
  {
866
1540
  "id": "set-dashboard-view",
@@ -870,9 +1544,24 @@
870
1544
  "arguments": {
871
1545
  "draftId": "${dashboardDraftId}",
872
1546
  "generation": "${dashboardGeneration}",
873
- "view": { "bbox": [-157.862, 21.3064, -157.8595, 21.3083], "crs": "EPSG:4326" }
1547
+ "view": {
1548
+ "bbox": [
1549
+ -157.862,
1550
+ 21.3064,
1551
+ -157.8595,
1552
+ 21.3083
1553
+ ],
1554
+ "crs": "EPSG:4326"
1555
+ }
874
1556
  },
875
- "captures": [{ "variable": "dashboardGeneration", "pointers": ["/structuredContent/generation"] }]
1557
+ "captures": [
1558
+ {
1559
+ "variable": "dashboardGeneration",
1560
+ "pointers": [
1561
+ "/structuredContent/generation"
1562
+ ]
1563
+ }
1564
+ ]
876
1565
  },
877
1566
  {
878
1567
  "id": "add-dashboard-chart",
@@ -887,10 +1576,21 @@
887
1576
  "kind": "chart",
888
1577
  "title": "Assessed value by zone",
889
1578
  "sourceId": "parcels",
890
- "config": { "categoryField": "zone", "valueField": "assessed_value", "aggregate": "sum" }
1579
+ "config": {
1580
+ "categoryField": "zone",
1581
+ "valueField": "assessed_value",
1582
+ "aggregate": "sum"
1583
+ }
891
1584
  }
892
1585
  },
893
- "captures": [{ "variable": "dashboardGeneration", "pointers": ["/structuredContent/generation"] }]
1586
+ "captures": [
1587
+ {
1588
+ "variable": "dashboardGeneration",
1589
+ "pointers": [
1590
+ "/structuredContent/generation"
1591
+ ]
1592
+ }
1593
+ ]
894
1594
  },
895
1595
  {
896
1596
  "id": "add-dashboard-layer-control",
@@ -900,16 +1600,30 @@
900
1600
  "arguments": {
901
1601
  "draftId": "${dashboardDraftId}",
902
1602
  "generation": "${dashboardGeneration}",
903
- "control": { "id": "layers", "kind": "layer-list", "title": "Layers", "sourceId": "parcels" }
1603
+ "control": {
1604
+ "id": "layers",
1605
+ "kind": "layer-list",
1606
+ "title": "Layers",
1607
+ "sourceId": "parcels"
1608
+ }
904
1609
  },
905
- "captures": [{ "variable": "dashboardGeneration", "pointers": ["/structuredContent/generation"] }]
1610
+ "captures": [
1611
+ {
1612
+ "variable": "dashboardGeneration",
1613
+ "pointers": [
1614
+ "/structuredContent/generation"
1615
+ ]
1616
+ }
1617
+ ]
906
1618
  },
907
1619
  {
908
1620
  "id": "validate-dashboard-draft",
909
1621
  "title": "Validate the composed dashboard envelope",
910
1622
  "kind": "mcp",
911
1623
  "tool": "honua_studio_validate_draft",
912
- "arguments": { "draftId": "${dashboardDraftId}" }
1624
+ "arguments": {
1625
+ "draftId": "${dashboardDraftId}"
1626
+ }
913
1627
  },
914
1628
  {
915
1629
  "id": "save-dashboard-version",
@@ -922,10 +1636,31 @@
922
1636
  "changeNote": "2026.1 zero-to-map dashboard"
923
1637
  },
924
1638
  "captures": [
925
- { "variable": "savedDashboardItemId", "pointers": ["/structuredContent/itemId"], "equals": "${dashboardItemId}" },
926
- { "variable": "dashboardVersionId", "pointers": ["/structuredContent/versionId"] },
927
- { "variable": "dashboardVersionNumber", "pointers": ["/structuredContent/versionNumber"] },
928
- { "variable": "dashboardContentHash", "pointers": ["/structuredContent/contentHash"] }
1639
+ {
1640
+ "variable": "savedDashboardItemId",
1641
+ "pointers": [
1642
+ "/structuredContent/itemId"
1643
+ ],
1644
+ "equals": "${dashboardItemId}"
1645
+ },
1646
+ {
1647
+ "variable": "dashboardVersionId",
1648
+ "pointers": [
1649
+ "/structuredContent/versionId"
1650
+ ]
1651
+ },
1652
+ {
1653
+ "variable": "dashboardVersionNumber",
1654
+ "pointers": [
1655
+ "/structuredContent/versionNumber"
1656
+ ]
1657
+ },
1658
+ {
1659
+ "variable": "dashboardContentHash",
1660
+ "pointers": [
1661
+ "/structuredContent/contentHash"
1662
+ ]
1663
+ }
929
1664
  ]
930
1665
  },
931
1666
  {
@@ -933,10 +1668,25 @@
933
1668
  "title": "Read the exact immutable dashboard version",
934
1669
  "kind": "mcp",
935
1670
  "tool": "honua_studio_get_version",
936
- "arguments": { "itemId": "${dashboardItemId}", "versionId": "${dashboardVersionId}" },
1671
+ "arguments": {
1672
+ "itemId": "${dashboardItemId}",
1673
+ "versionId": "${dashboardVersionId}"
1674
+ },
937
1675
  "captures": [
938
- { "variable": "loadedDashboardVersionId", "pointers": ["/structuredContent/versionId"], "equals": "${dashboardVersionId}" },
939
- { "variable": "loadedDashboardContentHash", "pointers": ["/structuredContent/contentHash"], "equals": "${dashboardContentHash}" }
1676
+ {
1677
+ "variable": "loadedDashboardVersionId",
1678
+ "pointers": [
1679
+ "/structuredContent/versionId"
1680
+ ],
1681
+ "equals": "${dashboardVersionId}"
1682
+ },
1683
+ {
1684
+ "variable": "loadedDashboardContentHash",
1685
+ "pointers": [
1686
+ "/structuredContent/contentHash"
1687
+ ],
1688
+ "equals": "${dashboardContentHash}"
1689
+ }
940
1690
  ]
941
1691
  },
942
1692
  {
@@ -944,18 +1694,43 @@
944
1694
  "title": "Reopen the immutable dashboard version as a new draft",
945
1695
  "kind": "mcp",
946
1696
  "tool": "honua_studio_reopen_version",
947
- "arguments": { "itemId": "${dashboardItemId}", "versionId": "${dashboardVersionId}" },
1697
+ "arguments": {
1698
+ "itemId": "${dashboardItemId}",
1699
+ "versionId": "${dashboardVersionId}"
1700
+ },
948
1701
  "captures": [
949
- { "variable": "dashboardReopenedDraftId", "pointers": ["/structuredContent/draftId"] },
950
- { "variable": "dashboardReopenedItemId", "pointers": ["/structuredContent/itemId"], "equals": "${dashboardItemId}" },
951
- { "variable": "dashboardReopenedBaseVersionId", "pointers": ["/structuredContent/baseVersionId"], "equals": "${dashboardVersionId}" },
952
- { "variable": "dashboardReopenedGeneration", "pointers": ["/structuredContent/generation"] }
1702
+ {
1703
+ "variable": "dashboardReopenedDraftId",
1704
+ "pointers": [
1705
+ "/structuredContent/draftId"
1706
+ ]
1707
+ },
1708
+ {
1709
+ "variable": "dashboardReopenedItemId",
1710
+ "pointers": [
1711
+ "/structuredContent/itemId"
1712
+ ],
1713
+ "equals": "${dashboardItemId}"
1714
+ },
1715
+ {
1716
+ "variable": "dashboardReopenedBaseVersionId",
1717
+ "pointers": [
1718
+ "/structuredContent/baseVersionId"
1719
+ ],
1720
+ "equals": "${dashboardVersionId}"
1721
+ },
1722
+ {
1723
+ "variable": "dashboardReopenedGeneration",
1724
+ "pointers": [
1725
+ "/structuredContent/generation"
1726
+ ]
1727
+ }
953
1728
  ]
954
1729
  }
955
1730
  ]
956
1731
  },
957
1732
  {
958
- "number": 5,
1733
+ "number": 6,
959
1734
  "id": "proposal",
960
1735
  "title": "Propose publication without bypassing human confirmation",
961
1736
  "actions": [
@@ -978,10 +1753,34 @@
978
1753
  "/structuredContent/shareUrl"
979
1754
  ],
980
1755
  "captures": [
981
- { "variable": "mapReopenedGeneration", "pointers": ["/structuredContent/draft/generation", "/structuredContent/generation"] },
982
- { "variable": "mapProposalGeneration", "pointers": ["/structuredContent/draft/generation", "/structuredContent/generation"] },
983
- { "variable": "mapPublicationIntentRecorded", "pointers": ["/structuredContent/recorded"], "equals": true },
984
- { "variable": "mapHumanConfirmationRequired", "pointers": ["/structuredContent/humanConfirmationRequired"], "equals": true }
1756
+ {
1757
+ "variable": "mapReopenedGeneration",
1758
+ "pointers": [
1759
+ "/structuredContent/draft/generation",
1760
+ "/structuredContent/generation"
1761
+ ]
1762
+ },
1763
+ {
1764
+ "variable": "mapProposalGeneration",
1765
+ "pointers": [
1766
+ "/structuredContent/draft/generation",
1767
+ "/structuredContent/generation"
1768
+ ]
1769
+ },
1770
+ {
1771
+ "variable": "mapPublicationIntentRecorded",
1772
+ "pointers": [
1773
+ "/structuredContent/recorded"
1774
+ ],
1775
+ "equals": true
1776
+ },
1777
+ {
1778
+ "variable": "mapHumanConfirmationRequired",
1779
+ "pointers": [
1780
+ "/structuredContent/humanConfirmationRequired"
1781
+ ],
1782
+ "equals": true
1783
+ }
985
1784
  ]
986
1785
  },
987
1786
  {
@@ -995,9 +1794,25 @@
995
1794
  "changeNote": "2026.1 zero-to-map map publication intent"
996
1795
  },
997
1796
  "captures": [
998
- { "variable": "mapPublicationItemId", "pointers": ["/structuredContent/itemId"], "equals": "${mapItemId}" },
999
- { "variable": "mapPublicationVersionId", "pointers": ["/structuredContent/versionId"] },
1000
- { "variable": "mapPublicationContentHash", "pointers": ["/structuredContent/contentHash"] }
1797
+ {
1798
+ "variable": "mapPublicationItemId",
1799
+ "pointers": [
1800
+ "/structuredContent/itemId"
1801
+ ],
1802
+ "equals": "${mapItemId}"
1803
+ },
1804
+ {
1805
+ "variable": "mapPublicationVersionId",
1806
+ "pointers": [
1807
+ "/structuredContent/versionId"
1808
+ ]
1809
+ },
1810
+ {
1811
+ "variable": "mapPublicationContentHash",
1812
+ "pointers": [
1813
+ "/structuredContent/contentHash"
1814
+ ]
1815
+ }
1001
1816
  ]
1002
1817
  },
1003
1818
  {
@@ -1019,10 +1834,34 @@
1019
1834
  "/structuredContent/shareUrl"
1020
1835
  ],
1021
1836
  "captures": [
1022
- { "variable": "appReopenedGeneration", "pointers": ["/structuredContent/draft/generation", "/structuredContent/generation"] },
1023
- { "variable": "appProposalGeneration", "pointers": ["/structuredContent/draft/generation", "/structuredContent/generation"] },
1024
- { "variable": "appPublicationIntentRecorded", "pointers": ["/structuredContent/recorded"], "equals": true },
1025
- { "variable": "appHumanConfirmationRequired", "pointers": ["/structuredContent/humanConfirmationRequired"], "equals": true }
1837
+ {
1838
+ "variable": "appReopenedGeneration",
1839
+ "pointers": [
1840
+ "/structuredContent/draft/generation",
1841
+ "/structuredContent/generation"
1842
+ ]
1843
+ },
1844
+ {
1845
+ "variable": "appProposalGeneration",
1846
+ "pointers": [
1847
+ "/structuredContent/draft/generation",
1848
+ "/structuredContent/generation"
1849
+ ]
1850
+ },
1851
+ {
1852
+ "variable": "appPublicationIntentRecorded",
1853
+ "pointers": [
1854
+ "/structuredContent/recorded"
1855
+ ],
1856
+ "equals": true
1857
+ },
1858
+ {
1859
+ "variable": "appHumanConfirmationRequired",
1860
+ "pointers": [
1861
+ "/structuredContent/humanConfirmationRequired"
1862
+ ],
1863
+ "equals": true
1864
+ }
1026
1865
  ]
1027
1866
  },
1028
1867
  {
@@ -1036,9 +1875,25 @@
1036
1875
  "changeNote": "2026.1 zero-to-map app publication intent"
1037
1876
  },
1038
1877
  "captures": [
1039
- { "variable": "appPublicationItemId", "pointers": ["/structuredContent/itemId"], "equals": "${appItemId}" },
1040
- { "variable": "appPublicationVersionId", "pointers": ["/structuredContent/versionId"] },
1041
- { "variable": "appPublicationContentHash", "pointers": ["/structuredContent/contentHash"] }
1878
+ {
1879
+ "variable": "appPublicationItemId",
1880
+ "pointers": [
1881
+ "/structuredContent/itemId"
1882
+ ],
1883
+ "equals": "${appItemId}"
1884
+ },
1885
+ {
1886
+ "variable": "appPublicationVersionId",
1887
+ "pointers": [
1888
+ "/structuredContent/versionId"
1889
+ ]
1890
+ },
1891
+ {
1892
+ "variable": "appPublicationContentHash",
1893
+ "pointers": [
1894
+ "/structuredContent/contentHash"
1895
+ ]
1896
+ }
1042
1897
  ]
1043
1898
  },
1044
1899
  {
@@ -1060,10 +1915,34 @@
1060
1915
  "/structuredContent/shareUrl"
1061
1916
  ],
1062
1917
  "captures": [
1063
- { "variable": "dashboardReopenedGeneration", "pointers": ["/structuredContent/draft/generation", "/structuredContent/generation"] },
1064
- { "variable": "dashboardProposalGeneration", "pointers": ["/structuredContent/draft/generation", "/structuredContent/generation"] },
1065
- { "variable": "dashboardPublicationIntentRecorded", "pointers": ["/structuredContent/recorded"], "equals": true },
1066
- { "variable": "dashboardHumanConfirmationRequired", "pointers": ["/structuredContent/humanConfirmationRequired"], "equals": true }
1918
+ {
1919
+ "variable": "dashboardReopenedGeneration",
1920
+ "pointers": [
1921
+ "/structuredContent/draft/generation",
1922
+ "/structuredContent/generation"
1923
+ ]
1924
+ },
1925
+ {
1926
+ "variable": "dashboardProposalGeneration",
1927
+ "pointers": [
1928
+ "/structuredContent/draft/generation",
1929
+ "/structuredContent/generation"
1930
+ ]
1931
+ },
1932
+ {
1933
+ "variable": "dashboardPublicationIntentRecorded",
1934
+ "pointers": [
1935
+ "/structuredContent/recorded"
1936
+ ],
1937
+ "equals": true
1938
+ },
1939
+ {
1940
+ "variable": "dashboardHumanConfirmationRequired",
1941
+ "pointers": [
1942
+ "/structuredContent/humanConfirmationRequired"
1943
+ ],
1944
+ "equals": true
1945
+ }
1067
1946
  ]
1068
1947
  },
1069
1948
  {
@@ -1077,15 +1956,31 @@
1077
1956
  "changeNote": "2026.1 zero-to-map dashboard publication intent"
1078
1957
  },
1079
1958
  "captures": [
1080
- { "variable": "dashboardPublicationItemId", "pointers": ["/structuredContent/itemId"], "equals": "${dashboardItemId}" },
1081
- { "variable": "dashboardPublicationVersionId", "pointers": ["/structuredContent/versionId"] },
1082
- { "variable": "dashboardPublicationContentHash", "pointers": ["/structuredContent/contentHash"] }
1959
+ {
1960
+ "variable": "dashboardPublicationItemId",
1961
+ "pointers": [
1962
+ "/structuredContent/itemId"
1963
+ ],
1964
+ "equals": "${dashboardItemId}"
1965
+ },
1966
+ {
1967
+ "variable": "dashboardPublicationVersionId",
1968
+ "pointers": [
1969
+ "/structuredContent/versionId"
1970
+ ]
1971
+ },
1972
+ {
1973
+ "variable": "dashboardPublicationContentHash",
1974
+ "pointers": [
1975
+ "/structuredContent/contentHash"
1976
+ ]
1977
+ }
1083
1978
  ]
1084
1979
  }
1085
1980
  ]
1086
1981
  },
1087
1982
  {
1088
- "number": 6,
1983
+ "number": 7,
1089
1984
  "id": "console",
1090
1985
  "title": "Inspect and approve the candidate in Console",
1091
1986
  "actions": [
@@ -1175,49 +2070,205 @@
1175
2070
  "/shareUrl"
1176
2071
  ],
1177
2072
  "equalPointers": [
1178
- ["/proposals/map/proposalId", "/publications/map/requestId"],
1179
- ["/proposals/map/executionOperationId", "/audit/map/operationId"],
1180
- ["/proposals/map/draftId", "/resources/studio/map/reopenedDraftId"],
1181
- ["/proposals/app/proposalId", "/publications/app/requestId"],
1182
- ["/proposals/app/executionOperationId", "/audit/app/operationId"],
1183
- ["/proposals/app/draftId", "/resources/studio/app/reopenedDraftId"],
1184
- ["/proposals/dashboard/proposalId", "/publications/dashboard/requestId"],
1185
- ["/proposals/dashboard/executionOperationId", "/audit/dashboard/operationId"],
1186
- ["/proposals/dashboard/draftId", "/resources/studio/dashboard/reopenedDraftId"],
1187
- ["/shareUrl", "/publications/app/publicUrl"],
1188
- ["/resources/jobs/esriMcp", "/resources/gp/jobId"]
2073
+ [
2074
+ "/proposals/map/proposalId",
2075
+ "/publications/map/requestId"
2076
+ ],
2077
+ [
2078
+ "/proposals/map/executionOperationId",
2079
+ "/audit/map/operationId"
2080
+ ],
2081
+ [
2082
+ "/proposals/map/draftId",
2083
+ "/resources/studio/map/reopenedDraftId"
2084
+ ],
2085
+ [
2086
+ "/proposals/app/proposalId",
2087
+ "/publications/app/requestId"
2088
+ ],
2089
+ [
2090
+ "/proposals/app/executionOperationId",
2091
+ "/audit/app/operationId"
2092
+ ],
2093
+ [
2094
+ "/proposals/app/draftId",
2095
+ "/resources/studio/app/reopenedDraftId"
2096
+ ],
2097
+ [
2098
+ "/proposals/dashboard/proposalId",
2099
+ "/publications/dashboard/requestId"
2100
+ ],
2101
+ [
2102
+ "/proposals/dashboard/executionOperationId",
2103
+ "/audit/dashboard/operationId"
2104
+ ],
2105
+ [
2106
+ "/proposals/dashboard/draftId",
2107
+ "/resources/studio/dashboard/reopenedDraftId"
2108
+ ],
2109
+ [
2110
+ "/shareUrl",
2111
+ "/publications/app/publicUrl"
2112
+ ],
2113
+ [
2114
+ "/resources/jobs/esriMcp",
2115
+ "/resources/gp/jobId"
2116
+ ]
1189
2117
  ],
1190
2118
  "captures": [
1191
- { "variable": "candidateId", "pointers": ["/candidate/candidateId"] },
1192
- { "variable": "releaseId", "pointers": ["/candidate/releaseId"] },
1193
- { "variable": "mapProposalId", "pointers": ["/proposals/map/proposalId"] },
1194
- { "variable": "mapExecutionOperationId", "pointers": ["/proposals/map/executionOperationId"] },
1195
- { "variable": "mapPublicationRequestId", "pointers": ["/publications/map/requestId"] },
1196
- { "variable": "mapPublicationId", "pointers": ["/publications/map/publicationId"] },
1197
- { "variable": "mapPublicationStatus", "pointers": ["/publications/map/status"], "equals": "published" },
1198
- { "variable": "mapPublicUrl", "pointers": ["/publications/map/publicUrl"] },
1199
- { "variable": "mapAuditCorrelationId", "pointers": ["/audit/map/correlationId"] },
1200
- { "variable": "appProposalId", "pointers": ["/proposals/app/proposalId"] },
1201
- { "variable": "appExecutionOperationId", "pointers": ["/proposals/app/executionOperationId"] },
1202
- { "variable": "appPublicationRequestId", "pointers": ["/publications/app/requestId"] },
1203
- { "variable": "appPublicationId", "pointers": ["/publications/app/publicationId"] },
1204
- { "variable": "appPublicationStatus", "pointers": ["/publications/app/status"], "equals": "published" },
1205
- { "variable": "appPublicUrl", "pointers": ["/publications/app/publicUrl"] },
1206
- { "variable": "appAuditCorrelationId", "pointers": ["/audit/app/correlationId"] },
1207
- { "variable": "dashboardProposalId", "pointers": ["/proposals/dashboard/proposalId"] },
1208
- { "variable": "dashboardExecutionOperationId", "pointers": ["/proposals/dashboard/executionOperationId"] },
1209
- { "variable": "dashboardPublicationRequestId", "pointers": ["/publications/dashboard/requestId"] },
1210
- { "variable": "dashboardPublicationId", "pointers": ["/publications/dashboard/publicationId"] },
1211
- { "variable": "dashboardPublicationStatus", "pointers": ["/publications/dashboard/status"], "equals": "published" },
1212
- { "variable": "dashboardPublicUrl", "pointers": ["/publications/dashboard/publicUrl"] },
1213
- { "variable": "dashboardAuditCorrelationId", "pointers": ["/audit/dashboard/correlationId"] },
1214
- { "variable": "shareUrl", "pointers": ["/shareUrl"] }
2119
+ {
2120
+ "variable": "candidateId",
2121
+ "pointers": [
2122
+ "/candidate/candidateId"
2123
+ ]
2124
+ },
2125
+ {
2126
+ "variable": "releaseId",
2127
+ "pointers": [
2128
+ "/candidate/releaseId"
2129
+ ]
2130
+ },
2131
+ {
2132
+ "variable": "mapProposalId",
2133
+ "pointers": [
2134
+ "/proposals/map/proposalId"
2135
+ ]
2136
+ },
2137
+ {
2138
+ "variable": "mapExecutionOperationId",
2139
+ "pointers": [
2140
+ "/proposals/map/executionOperationId"
2141
+ ]
2142
+ },
2143
+ {
2144
+ "variable": "mapPublicationRequestId",
2145
+ "pointers": [
2146
+ "/publications/map/requestId"
2147
+ ]
2148
+ },
2149
+ {
2150
+ "variable": "mapPublicationId",
2151
+ "pointers": [
2152
+ "/publications/map/publicationId"
2153
+ ]
2154
+ },
2155
+ {
2156
+ "variable": "mapPublicationStatus",
2157
+ "pointers": [
2158
+ "/publications/map/status"
2159
+ ],
2160
+ "equals": "published"
2161
+ },
2162
+ {
2163
+ "variable": "mapPublicUrl",
2164
+ "pointers": [
2165
+ "/publications/map/publicUrl"
2166
+ ]
2167
+ },
2168
+ {
2169
+ "variable": "mapAuditCorrelationId",
2170
+ "pointers": [
2171
+ "/audit/map/correlationId"
2172
+ ]
2173
+ },
2174
+ {
2175
+ "variable": "appProposalId",
2176
+ "pointers": [
2177
+ "/proposals/app/proposalId"
2178
+ ]
2179
+ },
2180
+ {
2181
+ "variable": "appExecutionOperationId",
2182
+ "pointers": [
2183
+ "/proposals/app/executionOperationId"
2184
+ ]
2185
+ },
2186
+ {
2187
+ "variable": "appPublicationRequestId",
2188
+ "pointers": [
2189
+ "/publications/app/requestId"
2190
+ ]
2191
+ },
2192
+ {
2193
+ "variable": "appPublicationId",
2194
+ "pointers": [
2195
+ "/publications/app/publicationId"
2196
+ ]
2197
+ },
2198
+ {
2199
+ "variable": "appPublicationStatus",
2200
+ "pointers": [
2201
+ "/publications/app/status"
2202
+ ],
2203
+ "equals": "published"
2204
+ },
2205
+ {
2206
+ "variable": "appPublicUrl",
2207
+ "pointers": [
2208
+ "/publications/app/publicUrl"
2209
+ ]
2210
+ },
2211
+ {
2212
+ "variable": "appAuditCorrelationId",
2213
+ "pointers": [
2214
+ "/audit/app/correlationId"
2215
+ ]
2216
+ },
2217
+ {
2218
+ "variable": "dashboardProposalId",
2219
+ "pointers": [
2220
+ "/proposals/dashboard/proposalId"
2221
+ ]
2222
+ },
2223
+ {
2224
+ "variable": "dashboardExecutionOperationId",
2225
+ "pointers": [
2226
+ "/proposals/dashboard/executionOperationId"
2227
+ ]
2228
+ },
2229
+ {
2230
+ "variable": "dashboardPublicationRequestId",
2231
+ "pointers": [
2232
+ "/publications/dashboard/requestId"
2233
+ ]
2234
+ },
2235
+ {
2236
+ "variable": "dashboardPublicationId",
2237
+ "pointers": [
2238
+ "/publications/dashboard/publicationId"
2239
+ ]
2240
+ },
2241
+ {
2242
+ "variable": "dashboardPublicationStatus",
2243
+ "pointers": [
2244
+ "/publications/dashboard/status"
2245
+ ],
2246
+ "equals": "published"
2247
+ },
2248
+ {
2249
+ "variable": "dashboardPublicUrl",
2250
+ "pointers": [
2251
+ "/publications/dashboard/publicUrl"
2252
+ ]
2253
+ },
2254
+ {
2255
+ "variable": "dashboardAuditCorrelationId",
2256
+ "pointers": [
2257
+ "/audit/dashboard/correlationId"
2258
+ ]
2259
+ },
2260
+ {
2261
+ "variable": "shareUrl",
2262
+ "pointers": [
2263
+ "/shareUrl"
2264
+ ]
2265
+ }
1215
2266
  ]
1216
2267
  }
1217
2268
  ]
1218
2269
  },
1219
2270
  {
1220
- "number": 7,
2271
+ "number": 8,
1221
2272
  "id": "artifact",
1222
2273
  "title": "Verify the stable map, app, and dashboard URLs",
1223
2274
  "actions": [