@honua/mcp-server 0.1.2-beta.0 → 0.1.8-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.
Files changed (117) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +232 -9
  3. package/dist/src/certification/admin-parity.d.ts +96 -0
  4. package/dist/src/certification/admin-parity.d.ts.map +1 -0
  5. package/dist/src/certification/admin-parity.js +235 -0
  6. package/dist/src/certification/census-fixture-client.d.ts.map +1 -1
  7. package/dist/src/certification/census-fixture-client.js +5 -0
  8. package/dist/src/certification/certifier.d.ts +1 -1
  9. package/dist/src/certification/certifier.d.ts.map +1 -1
  10. package/dist/src/certification/certifier.js +28 -20
  11. package/dist/src/certification/cli.js +1 -1
  12. package/dist/src/certification/cql2.d.ts +24 -0
  13. package/dist/src/certification/cql2.d.ts.map +1 -0
  14. package/dist/src/certification/cql2.js +354 -0
  15. package/dist/src/certification/fixtures.d.ts +8 -0
  16. package/dist/src/certification/fixtures.d.ts.map +1 -1
  17. package/dist/src/certification/fixtures.js +26 -10
  18. package/dist/src/certification/ogc-data.d.ts +30 -0
  19. package/dist/src/certification/ogc-data.d.ts.map +1 -0
  20. package/dist/src/certification/ogc-data.js +726 -0
  21. package/dist/src/certification/ogc-fixture-client.d.ts +4 -0
  22. package/dist/src/certification/ogc-fixture-client.d.ts.map +1 -0
  23. package/dist/src/certification/ogc-fixture-client.js +190 -0
  24. package/dist/src/certification/target.d.ts +10 -1
  25. package/dist/src/certification/target.d.ts.map +1 -1
  26. package/dist/src/certification/target.js +63 -28
  27. package/dist/src/credential-endpoint.d.ts +3 -0
  28. package/dist/src/credential-endpoint.d.ts.map +1 -0
  29. package/dist/src/credential-endpoint.js +24 -0
  30. package/dist/src/eval/cli.js +6 -3
  31. package/dist/src/eval/corpus.d.ts +7 -0
  32. package/dist/src/eval/corpus.d.ts.map +1 -1
  33. package/dist/src/eval/corpus.js +12 -0
  34. package/dist/src/eval/ogc-corpus.d.ts +3 -0
  35. package/dist/src/eval/ogc-corpus.d.ts.map +1 -0
  36. package/dist/src/eval/ogc-corpus.js +437 -0
  37. package/dist/src/eval/runner.d.ts +6 -0
  38. package/dist/src/eval/runner.d.ts.map +1 -1
  39. package/dist/src/eval/runner.js +21 -7
  40. package/dist/src/helpers.d.ts +8 -13
  41. package/dist/src/helpers.d.ts.map +1 -1
  42. package/dist/src/helpers.js +7 -35
  43. package/dist/src/index.d.ts +36 -8
  44. package/dist/src/index.d.ts.map +1 -1
  45. package/dist/src/index.js +55 -18
  46. package/dist/src/neutral/errors.d.ts +73 -0
  47. package/dist/src/neutral/errors.d.ts.map +1 -0
  48. package/dist/src/neutral/errors.js +112 -0
  49. package/dist/src/neutral/filter.d.ts +108 -0
  50. package/dist/src/neutral/filter.d.ts.map +1 -0
  51. package/dist/src/neutral/filter.js +271 -0
  52. package/dist/src/neutral/query.d.ts +101 -0
  53. package/dist/src/neutral/query.d.ts.map +1 -0
  54. package/dist/src/neutral/query.js +180 -0
  55. package/dist/src/neutral/result.d.ts +33 -0
  56. package/dist/src/neutral/result.d.ts.map +1 -0
  57. package/dist/src/neutral/result.js +38 -0
  58. package/dist/src/neutral/source-ref.d.ts +126 -0
  59. package/dist/src/neutral/source-ref.d.ts.map +1 -0
  60. package/dist/src/neutral/source-ref.js +267 -0
  61. package/dist/src/nl-map-control.d.ts.map +1 -1
  62. package/dist/src/proxy.d.ts.map +1 -1
  63. package/dist/src/proxy.js +29 -14
  64. package/dist/src/release/zero-to-map-checkpoint.d.ts +34 -0
  65. package/dist/src/release/zero-to-map-checkpoint.d.ts.map +1 -0
  66. package/dist/src/release/zero-to-map-checkpoint.js +369 -0
  67. package/dist/src/release/zero-to-map-cli.d.ts +51 -0
  68. package/dist/src/release/zero-to-map-cli.d.ts.map +1 -0
  69. package/dist/src/release/zero-to-map-cli.js +880 -0
  70. package/dist/src/release/zero-to-map-provision.d.ts +37 -0
  71. package/dist/src/release/zero-to-map-provision.d.ts.map +1 -0
  72. package/dist/src/release/zero-to-map-provision.js +177 -0
  73. package/dist/src/release/zero-to-map.d.ts +296 -0
  74. package/dist/src/release/zero-to-map.d.ts.map +1 -0
  75. package/dist/src/release/zero-to-map.js +1069 -0
  76. package/dist/src/tools/admin-install-local.d.ts +30 -0
  77. package/dist/src/tools/admin-install-local.d.ts.map +1 -0
  78. package/dist/src/tools/admin-install-local.js +22 -0
  79. package/dist/src/tools/control-plane-command.d.ts +99 -0
  80. package/dist/src/tools/control-plane-command.d.ts.map +1 -0
  81. package/dist/src/tools/control-plane-command.js +180 -0
  82. package/dist/src/tools/count-features.d.ts +85 -11
  83. package/dist/src/tools/count-features.d.ts.map +1 -1
  84. package/dist/src/tools/count-features.js +49 -31
  85. package/dist/src/tools/describe-layer.d.ts +30 -6
  86. package/dist/src/tools/describe-layer.d.ts.map +1 -1
  87. package/dist/src/tools/describe-layer.js +99 -8
  88. package/dist/src/tools/docs-search.d.ts +100 -0
  89. package/dist/src/tools/docs-search.d.ts.map +1 -0
  90. package/dist/src/tools/docs-search.js +381 -0
  91. package/dist/src/tools/get-extent.d.ts +69 -11
  92. package/dist/src/tools/get-extent.d.ts.map +1 -1
  93. package/dist/src/tools/get-extent.js +28 -46
  94. package/dist/src/tools/list-services.d.ts +7 -0
  95. package/dist/src/tools/list-services.d.ts.map +1 -1
  96. package/dist/src/tools/list-services.js +8 -1
  97. package/dist/src/tools/list-sources.d.ts +44 -0
  98. package/dist/src/tools/list-sources.d.ts.map +1 -0
  99. package/dist/src/tools/list-sources.js +138 -0
  100. package/dist/src/tools/query-features.d.ts +99 -19
  101. package/dist/src/tools/query-features.d.ts.map +1 -1
  102. package/dist/src/tools/query-features.js +38 -45
  103. package/dist/src/tools/statistics.d.ts +80 -12
  104. package/dist/src/tools/statistics.d.ts.map +1 -1
  105. package/dist/src/tools/statistics.js +56 -23
  106. package/package.json +37 -8
  107. package/release/zero-to-map/README.md +174 -0
  108. package/release/zero-to-map/configs/claude-code.mcp.json +11 -0
  109. package/release/zero-to-map/configs/claude-desktop.json +11 -0
  110. package/release/zero-to-map/configs/cursor.json +11 -0
  111. package/release/zero-to-map/contracts/aws-ecs-provision-binding.schema.json +59 -0
  112. package/release/zero-to-map/contracts/checkpoint.schema.json +152 -0
  113. package/release/zero-to-map/contracts/console-receipt.schema.json +150 -0
  114. package/release/zero-to-map/contracts/esri-gp-mcp.v1.json +73 -0
  115. package/release/zero-to-map/fixtures/parcels.geojson +33 -0
  116. package/release/zero-to-map/fixtures/zoning.geojson +24 -0
  117. package/release/zero-to-map/journey.v1.json +1248 -0
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://honua.io/schemas/aws-ecs-provision-binding.v1.json",
4
+ "title": "Honua pre-teardown AWS ECS provision binding",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "target", "status", "candidateId", "releaseId", "endpoint", "adminKeySecretRef", "accessCredential", "serverImage", "components", "checks", "evidence"],
7
+ "properties": {
8
+ "schemaVersion": { "const": "honua.aws-ecs.provision-binding/v1" },
9
+ "target": { "const": "aws-ecs" },
10
+ "status": { "const": "ready" },
11
+ "candidateId": { "type": "string", "pattern": "^manifest-sha256:[0-9a-f]{64}$" },
12
+ "releaseId": { "type": "string", "minLength": 1 },
13
+ "endpoint": { "type": "string", "pattern": "^https://" },
14
+ "adminKeySecretRef": { "type": "string", "pattern": "^arn:aws(?:-us-gov|-cn)?:secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:[A-Za-z0-9/_+=.@-]+$" },
15
+ "accessCredential": {
16
+ "type": "object",
17
+ "additionalProperties": false,
18
+ "required": ["id", "requestedGrants", "effectiveGrants", "status", "canAuthenticate", "referenceType", "referenceDigestSha256"],
19
+ "properties": {
20
+ "id": { "type": "string", "format": "uuid" },
21
+ "requestedGrants": { "type": "array", "minItems": 2, "maxItems": 2, "uniqueItems": true, "items": { "enum": ["admin:read", "admin:write"] } },
22
+ "effectiveGrants": { "type": "array", "minItems": 2, "maxItems": 2, "uniqueItems": true, "items": { "enum": ["admin:read", "admin:write"] } },
23
+ "status": { "const": "active" },
24
+ "canAuthenticate": { "const": true },
25
+ "referenceType": { "const": "aws-secrets-manager" },
26
+ "referenceDigestSha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
27
+ }
28
+ },
29
+ "serverImage": { "type": "string", "pattern": "^ghcr\\.io/honua-io/honua-server:[^@]+@sha256:[0-9a-f]{64}$" },
30
+ "components": {
31
+ "type": "object",
32
+ "required": ["honua-server", "honua-devops", "honua-iac"],
33
+ "properties": {
34
+ "honua-server": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
35
+ "honua-devops": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
36
+ "honua-iac": { "type": "string", "pattern": "^[0-9a-f]{40}$" }
37
+ },
38
+ "additionalProperties": false
39
+ },
40
+ "checks": {
41
+ "type": "object",
42
+ "required": ["terraform-plan", "terraform-apply", "readiness", "admin-mcp-handoff"],
43
+ "properties": {
44
+ "terraform-plan": { "const": "passed" },
45
+ "terraform-apply": { "const": "passed" },
46
+ "readiness": { "const": "passed" },
47
+ "admin-mcp-handoff": { "const": "passed" }
48
+ },
49
+ "additionalProperties": false
50
+ },
51
+ "evidence": {
52
+ "type": "object",
53
+ "required": ["url", "sha256"],
54
+ "properties": { "url": { "type": "string", "pattern": "^https://" }, "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" } },
55
+ "additionalProperties": false
56
+ }
57
+ },
58
+ "additionalProperties": false
59
+ }
@@ -0,0 +1,152 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://honua.io/schemas/zero-to-map-checkpoint.v1.json",
4
+ "title": "Honua zero-to-map pause/resume checkpoint",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "state", "createdAt", "journeyId", "releaseContract", "target", "planSha256", "sourceRevision", "mcpEndpointSha256", "candidateId", "releaseId", "resume", "consoleReceiptRequest", "integrity"],
7
+ "properties": {
8
+ "schemaVersion": { "const": "honua.zero-to-map.checkpoint/v1" },
9
+ "state": { "enum": ["paused", "consumed"] },
10
+ "createdAt": { "type": "string", "format": "date-time" },
11
+ "journeyId": { "type": "string", "minLength": 1 },
12
+ "releaseContract": { "type": "string", "minLength": 1 },
13
+ "target": { "enum": ["local-docker", "aws-ecs"] },
14
+ "planSha256": { "$ref": "#/$defs/sha256" },
15
+ "sourceRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
16
+ "mcpEndpointSha256": { "$ref": "#/$defs/sha256" },
17
+ "candidateId": { "type": "string", "minLength": 1 },
18
+ "releaseId": { "type": "string", "minLength": 1 },
19
+ "provisionReceiptSha256": { "$ref": "#/$defs/sha256" },
20
+ "resume": {
21
+ "type": "object",
22
+ "required": ["startedAt", "capturedVariables", "completedStages", "resumeAt"],
23
+ "properties": {
24
+ "startedAt": { "type": "string", "format": "date-time" },
25
+ "capturedVariables": { "type": "object" },
26
+ "completedStages": { "type": "array", "items": { "$ref": "#/$defs/stageReceipt" } },
27
+ "resumeAt": {
28
+ "type": "object",
29
+ "required": ["stageId", "actionId"],
30
+ "properties": { "stageId": { "const": "console" }, "actionId": { "const": "console-approval" } },
31
+ "additionalProperties": false
32
+ },
33
+ "catalog": { "$ref": "#/$defs/catalogReceipt" }
34
+ },
35
+ "additionalProperties": false
36
+ },
37
+ "consoleReceiptRequest": {
38
+ "type": "object",
39
+ "required": ["schemaVersion", "actionId", "receiptSchema", "matches", "requiredPointers", "equalPointers"],
40
+ "properties": {
41
+ "schemaVersion": { "const": "honua.zero-to-map.console-receipt-request/v1" },
42
+ "actionId": { "const": "console-approval" },
43
+ "receiptSchema": { "const": "honua.zero-to-map.console-receipt/v1" },
44
+ "matches": { "type": "object" },
45
+ "requiredPointers": { "type": "array", "items": { "type": "string", "pattern": "^/" } },
46
+ "equalPointers": {
47
+ "type": "array",
48
+ "items": { "type": "array", "prefixItems": [{ "type": "string", "pattern": "^/" }, { "type": "string", "pattern": "^/" }], "items": false }
49
+ }
50
+ },
51
+ "additionalProperties": false
52
+ },
53
+ "consumedAt": { "type": "string", "format": "date-time" },
54
+ "finalReceiptSha256": { "$ref": "#/$defs/sha256" },
55
+ "integrity": {
56
+ "type": "object",
57
+ "required": ["algorithm", "digest"],
58
+ "properties": { "algorithm": { "const": "sha256" }, "digest": { "$ref": "#/$defs/sha256" } },
59
+ "additionalProperties": false
60
+ }
61
+ },
62
+ "$defs": {
63
+ "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
64
+ "catalogReceipt": {
65
+ "$comment": "Catalog preflight evidence carried across the Console pause. Stages 6 and 7 issue no MCP action, so a resumed run cannot re-derive it and its final receipt would otherwise overwrite the pre-pause one with no catalog evidence.",
66
+ "type": "object",
67
+ "required": [
68
+ "schemaVersion",
69
+ "activeProfiles",
70
+ "expectedTotalTools",
71
+ "advertisedTotalTools",
72
+ "baseStaticTools",
73
+ "baseAdminTools",
74
+ "auditedExclusions",
75
+ "profiles",
76
+ "catalogSha256",
77
+ "adminRosterSha256",
78
+ "staticRosterSha256",
79
+ "exclusionRosterSha256"
80
+ ],
81
+ "properties": {
82
+ "schemaVersion": { "const": "honua.zero-to-map.catalog/v1" },
83
+ "activeProfiles": { "type": "array", "items": { "type": "string", "minLength": 1 } },
84
+ "expectedTotalTools": { "type": "integer", "minimum": 0 },
85
+ "advertisedTotalTools": { "type": "integer", "minimum": 0 },
86
+ "baseStaticTools": { "type": "integer", "minimum": 0 },
87
+ "baseAdminTools": { "type": "integer", "minimum": 0 },
88
+ "auditedExclusions": { "type": "integer", "minimum": 0 },
89
+ "profiles": { "type": "array", "items": { "$ref": "#/$defs/profileReceipt" } },
90
+ "catalogSha256": { "$ref": "#/$defs/sha256" },
91
+ "adminRosterSha256": { "$ref": "#/$defs/sha256" },
92
+ "staticRosterSha256": { "$ref": "#/$defs/sha256" },
93
+ "exclusionRosterSha256": { "$ref": "#/$defs/sha256" }
94
+ },
95
+ "additionalProperties": false
96
+ },
97
+ "profileReceipt": {
98
+ "type": "object",
99
+ "required": ["id", "expectedMembers", "advertisedMembers", "confirmedMembers", "nameResolvedMembers", "rosterSha256"],
100
+ "properties": {
101
+ "id": { "type": "string", "minLength": 1 },
102
+ "expectedMembers": { "type": "integer", "minimum": 0 },
103
+ "advertisedMembers": { "type": "integer", "minimum": 0 },
104
+ "confirmedMembers": { "type": "array", "items": { "type": "string", "minLength": 1 } },
105
+ "nameResolvedMembers": { "type": "array", "items": { "type": "string", "minLength": 1 } },
106
+ "rosterSha256": { "$ref": "#/$defs/sha256" }
107
+ },
108
+ "additionalProperties": false
109
+ },
110
+ "stageReceipt": {
111
+ "type": "object",
112
+ "required": ["number", "id", "title", "status", "actions"],
113
+ "properties": {
114
+ "number": { "type": "integer", "minimum": 1 },
115
+ "id": { "type": "string", "minLength": 1 },
116
+ "title": { "type": "string", "minLength": 1 },
117
+ "status": { "const": "passed" },
118
+ "actions": { "type": "array", "items": { "$ref": "#/$defs/actionReceipt" } }
119
+ },
120
+ "additionalProperties": false
121
+ },
122
+ "actionReceipt": {
123
+ "type": "object",
124
+ "required": ["id", "kind", "status", "startedAt", "finishedAt"],
125
+ "properties": {
126
+ "id": { "type": "string", "minLength": 1 },
127
+ "kind": { "enum": ["cli", "mcp", "mcp-resource", "gpserver", "receipt", "http"] },
128
+ "status": { "const": "passed" },
129
+ "startedAt": { "type": "string", "format": "date-time" },
130
+ "finishedAt": { "type": "string", "format": "date-time" },
131
+ "code": { "type": "string", "minLength": 1 },
132
+ "message": { "type": "string", "minLength": 1 },
133
+ "evidence": { "type": "object" },
134
+ "captures": { "type": "object" }
135
+ },
136
+ "additionalProperties": false
137
+ }
138
+ },
139
+ "allOf": [
140
+ {
141
+ "if": { "properties": { "state": { "const": "consumed" } } },
142
+ "then": { "required": ["consumedAt", "finalReceiptSha256"] },
143
+ "else": { "not": { "anyOf": [{ "required": ["consumedAt"] }, { "required": ["finalReceiptSha256"] }] } }
144
+ },
145
+ {
146
+ "if": { "properties": { "target": { "const": "aws-ecs" } } },
147
+ "then": { "required": ["provisionReceiptSha256"] },
148
+ "else": { "not": { "required": ["provisionReceiptSha256"] } }
149
+ }
150
+ ],
151
+ "additionalProperties": false
152
+ }
@@ -0,0 +1,150 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://honua.io/schemas/zero-to-map-console-receipt.v1.json",
4
+ "title": "Honua zero-to-map Console approval receipt",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "journeyId", "releaseContract", "status", "proposals", "publications", "audit", "resources", "candidate", "checks", "shareUrl"],
7
+ "properties": {
8
+ "schemaVersion": { "const": "honua.zero-to-map.console-receipt/v1" },
9
+ "journeyId": { "const": "2026.1-zero-to-map" },
10
+ "releaseContract": { "const": "honua-release#123/D9.3" },
11
+ "status": { "const": "passed" },
12
+ "proposals": { "$ref": "#/$defs/studioFamiliesProposal" },
13
+ "publications": { "$ref": "#/$defs/studioFamiliesPublication" },
14
+ "audit": { "$ref": "#/$defs/studioFamiliesAudit" },
15
+ "resources": {
16
+ "type": "object",
17
+ "required": ["connectionId", "serviceId", "layerIds", "jobs", "gp", "artifactId", "studio"],
18
+ "properties": {
19
+ "connectionId": { "type": "string", "minLength": 1 },
20
+ "serviceId": { "type": "string", "minLength": 1 },
21
+ "layerIds": {
22
+ "type": "object",
23
+ "required": ["parcels", "zoning"],
24
+ "properties": {
25
+ "parcels": { "type": "integer", "minimum": 0 },
26
+ "zoning": { "type": "integer", "minimum": 0 }
27
+ },
28
+ "additionalProperties": false
29
+ },
30
+ "jobs": {
31
+ "type": "object",
32
+ "required": ["esriMcp", "gpServer", "directAnalysis"],
33
+ "properties": {
34
+ "esriMcp": { "type": "string", "minLength": 1 },
35
+ "gpServer": { "type": "string", "minLength": 1 },
36
+ "directAnalysis": { "type": "string", "minLength": 1 }
37
+ },
38
+ "additionalProperties": false
39
+ },
40
+ "gp": {
41
+ "type": "object",
42
+ "required": ["jobId", "serviceId", "taskName", "processId", "resultPackageId", "artifactId"],
43
+ "properties": {
44
+ "jobId": { "type": "string", "minLength": 1 },
45
+ "serviceId": { "const": "analysis" },
46
+ "taskName": { "const": "Buffer" },
47
+ "processId": { "const": "geometry.buffer" },
48
+ "resultPackageId": { "type": "string", "minLength": 1 },
49
+ "artifactId": { "type": "string", "minLength": 1 }
50
+ },
51
+ "additionalProperties": false
52
+ },
53
+ "gpServerResultNames": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
54
+ "artifactId": { "type": "string", "minLength": 1 },
55
+ "studio": { "$ref": "#/$defs/studioFamiliesResource" }
56
+ },
57
+ "additionalProperties": false
58
+ },
59
+ "candidate": {
60
+ "type": "object",
61
+ "required": ["candidateId", "releaseId"],
62
+ "properties": {
63
+ "candidateId": { "type": "string", "minLength": 1 },
64
+ "releaseId": { "type": "string", "minLength": 1 }
65
+ },
66
+ "additionalProperties": false
67
+ },
68
+ "checks": {
69
+ "type": "object",
70
+ "required": ["health", "audit", "recovery"],
71
+ "properties": {
72
+ "health": { "const": "passed" },
73
+ "audit": { "const": "passed" },
74
+ "recovery": { "const": "passed" }
75
+ },
76
+ "additionalProperties": false
77
+ },
78
+ "shareUrl": { "type": "string", "format": "uri", "pattern": "^https://" }
79
+ },
80
+ "$defs": {
81
+ "studioFamiliesProposal": {
82
+ "type": "object",
83
+ "required": ["map", "app", "dashboard"],
84
+ "properties": { "map": { "$ref": "#/$defs/studioProposal" }, "app": { "$ref": "#/$defs/studioProposal" }, "dashboard": { "$ref": "#/$defs/studioProposal" } },
85
+ "additionalProperties": false
86
+ },
87
+ "studioProposal": {
88
+ "type": "object",
89
+ "required": ["draftId", "generation", "route", "proposalId", "executionOperationId"],
90
+ "properties": {
91
+ "draftId": { "type": "string", "format": "uuid" },
92
+ "generation": { "type": "integer", "minimum": 1 },
93
+ "route": { "type": "string", "minLength": 1 },
94
+ "proposalId": { "type": "string", "format": "uuid" },
95
+ "executionOperationId": { "type": "string", "minLength": 1 }
96
+ },
97
+ "additionalProperties": false
98
+ },
99
+ "studioFamiliesPublication": {
100
+ "type": "object",
101
+ "required": ["map", "app", "dashboard"],
102
+ "properties": { "map": { "$ref": "#/$defs/studioPublication" }, "app": { "$ref": "#/$defs/studioPublication" }, "dashboard": { "$ref": "#/$defs/studioPublication" } },
103
+ "additionalProperties": false
104
+ },
105
+ "studioPublication": {
106
+ "type": "object",
107
+ "required": ["requestId", "itemId", "versionId", "status", "publicationId", "publicUrl"],
108
+ "properties": {
109
+ "requestId": { "type": "string", "format": "uuid" },
110
+ "itemId": { "type": "string", "format": "uuid" },
111
+ "versionId": { "type": "string", "format": "uuid" },
112
+ "status": { "const": "published" },
113
+ "publicationId": { "type": "string", "minLength": 1 },
114
+ "publicUrl": { "type": "string", "format": "uri", "pattern": "^https://" }
115
+ },
116
+ "additionalProperties": false
117
+ },
118
+ "studioFamiliesAudit": {
119
+ "type": "object",
120
+ "required": ["map", "app", "dashboard"],
121
+ "properties": { "map": { "$ref": "#/$defs/studioAudit" }, "app": { "$ref": "#/$defs/studioAudit" }, "dashboard": { "$ref": "#/$defs/studioAudit" } },
122
+ "additionalProperties": false
123
+ },
124
+ "studioAudit": {
125
+ "type": "object",
126
+ "required": ["correlationId", "operationId"],
127
+ "properties": { "correlationId": { "type": "string", "minLength": 1 }, "operationId": { "type": "string", "minLength": 1 } },
128
+ "additionalProperties": false
129
+ },
130
+ "studioFamiliesResource": {
131
+ "type": "object",
132
+ "required": ["map", "app", "dashboard"],
133
+ "properties": { "map": { "$ref": "#/$defs/studioFamily" }, "app": { "$ref": "#/$defs/studioFamily" }, "dashboard": { "$ref": "#/$defs/studioFamily" } },
134
+ "additionalProperties": false
135
+ },
136
+ "studioFamily": {
137
+ "type": "object",
138
+ "required": ["draftId", "itemId", "versionId", "contentHash", "reopenedDraftId"],
139
+ "properties": {
140
+ "draftId": { "type": "string", "format": "uuid" },
141
+ "itemId": { "type": "string", "format": "uuid" },
142
+ "versionId": { "type": "string", "format": "uuid" },
143
+ "contentHash": { "type": "string", "minLength": 1 },
144
+ "reopenedDraftId": { "type": "string", "format": "uuid" }
145
+ },
146
+ "additionalProperties": false
147
+ }
148
+ },
149
+ "additionalProperties": false
150
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "schemaVersion": "honua.esri-gp-mcp-contract/v1",
3
+ "tools": [
4
+ {
5
+ "name": "honua_esri_gp_list_tasks",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {},
9
+ "required": [],
10
+ "additionalProperties": false
11
+ },
12
+ "output": {
13
+ "required": ["tasks"],
14
+ "taskFields": [
15
+ "taskName",
16
+ "processId",
17
+ "displayName",
18
+ "category",
19
+ "isAlias",
20
+ "supportsSynchronousExecution"
21
+ ]
22
+ }
23
+ },
24
+ {
25
+ "name": "honua_esri_gp_describe_task",
26
+ "inputSchema": {
27
+ "type": "object",
28
+ "properties": { "taskName": { "type": "string" } },
29
+ "required": ["taskName"],
30
+ "additionalProperties": false
31
+ },
32
+ "output": {
33
+ "required": [
34
+ "taskName",
35
+ "processId",
36
+ "displayName",
37
+ "description",
38
+ "category",
39
+ "executionType",
40
+ "supportsSynchronousExecution",
41
+ "parameters"
42
+ ],
43
+ "parameterFields": [
44
+ "name",
45
+ "displayName",
46
+ "description",
47
+ "dataType",
48
+ "direction",
49
+ "parameterType",
50
+ "defaultValue",
51
+ "choiceList"
52
+ ]
53
+ }
54
+ },
55
+ {
56
+ "name": "honua_esri_gp_execute_task",
57
+ "inputSchema": {
58
+ "type": "object",
59
+ "properties": {
60
+ "serviceId": { "type": "string" },
61
+ "taskName": { "type": "string" },
62
+ "parameters": { "type": "object", "additionalProperties": true },
63
+ "idempotencyKey": { "type": "string" }
64
+ },
65
+ "required": ["serviceId", "taskName", "parameters"],
66
+ "additionalProperties": false
67
+ },
68
+ "output": {
69
+ "required": ["jobId", "status", "resourceUri", "serviceId", "taskName", "processId"]
70
+ }
71
+ }
72
+ ]
73
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "type": "FeatureCollection",
3
+ "name": "zero_to_map_parcels",
4
+ "features": [
5
+ {
6
+ "type": "Feature",
7
+ "id": "P-101",
8
+ "properties": { "parcel_id": "P-101", "assessed_value": 420000, "zone": "R-1" },
9
+ "geometry": {
10
+ "type": "Polygon",
11
+ "coordinates": [[[-157.8616, 21.3067], [-157.8608, 21.3067], [-157.8608, 21.3073], [-157.8616, 21.3073], [-157.8616, 21.3067]]]
12
+ }
13
+ },
14
+ {
15
+ "type": "Feature",
16
+ "id": "P-102",
17
+ "properties": { "parcel_id": "P-102", "assessed_value": 675000, "zone": "B-2" },
18
+ "geometry": {
19
+ "type": "Polygon",
20
+ "coordinates": [[[-157.8607, 21.3067], [-157.8599, 21.3067], [-157.8599, 21.3073], [-157.8607, 21.3073], [-157.8607, 21.3067]]]
21
+ }
22
+ },
23
+ {
24
+ "type": "Feature",
25
+ "id": "P-103",
26
+ "properties": { "parcel_id": "P-103", "assessed_value": 910000, "zone": "R-1" },
27
+ "geometry": {
28
+ "type": "Polygon",
29
+ "coordinates": [[[-157.8616, 21.3074], [-157.8599, 21.3074], [-157.8599, 21.3080], [-157.8616, 21.3080], [-157.8616, 21.3074]]]
30
+ }
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "type": "FeatureCollection",
3
+ "name": "zero_to_map_zoning",
4
+ "features": [
5
+ {
6
+ "type": "Feature",
7
+ "id": "Z-R1",
8
+ "properties": { "zone": "R-1", "label": "Residential" },
9
+ "geometry": {
10
+ "type": "Polygon",
11
+ "coordinates": [[[-157.8620, 21.3064], [-157.8604, 21.3064], [-157.8604, 21.3083], [-157.8620, 21.3083], [-157.8620, 21.3064]]]
12
+ }
13
+ },
14
+ {
15
+ "type": "Feature",
16
+ "id": "Z-B2",
17
+ "properties": { "zone": "B-2", "label": "Community business" },
18
+ "geometry": {
19
+ "type": "Polygon",
20
+ "coordinates": [[[-157.8604, 21.3064], [-157.8595, 21.3064], [-157.8595, 21.3083], [-157.8604, 21.3083], [-157.8604, 21.3064]]]
21
+ }
22
+ }
23
+ ]
24
+ }