@honua/mcp-server 0.0.9-alpha.0 → 0.0.20-alpha.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.
- package/README.md +167 -0
- package/certification/geospatial-mcp-schemas/PROVENANCE.md +33 -0
- package/certification/geospatial-mcp-schemas/README.md +90 -0
- package/certification/geospatial-mcp-schemas/common/geoprocessing-error.schema.json +45 -0
- package/certification/geospatial-mcp-schemas/conformance/manifest.schema.json +73 -0
- package/certification/geospatial-mcp-schemas/index.json +311 -0
- package/certification/geospatial-mcp-schemas/resources/app-package.schema.json +20 -0
- package/certification/geospatial-mcp-schemas/resources/app-template.schema.json +15 -0
- package/certification/geospatial-mcp-schemas/resources/artifact.schema.json +69 -0
- package/certification/geospatial-mcp-schemas/resources/deployment.schema.json +27 -0
- package/certification/geospatial-mcp-schemas/resources/map-package.schema.json +21 -0
- package/certification/geospatial-mcp-schemas/resources/map-template.schema.json +15 -0
- package/certification/geospatial-mcp-schemas/resources/provenance.schema.json +50 -0
- package/certification/geospatial-mcp-schemas/resources/published-service.schema.json +21 -0
- package/certification/geospatial-mcp-schemas/resources/result-package.schema.json +64 -0
- package/certification/geospatial-mcp-schemas/resources/style.schema.json +12 -0
- package/certification/geospatial-mcp-schemas/resources/theme.schema.json +12 -0
- package/certification/geospatial-mcp-schemas/resources/workspace.schema.json +63 -0
- package/certification/geospatial-mcp-schemas/tools/apply_style_preset.schema.json +23 -0
- package/certification/geospatial-mcp-schemas/tools/cancel_job.schema.json +15 -0
- package/certification/geospatial-mcp-schemas/tools/clarify_intent.schema.json +69 -0
- package/certification/geospatial-mcp-schemas/tools/compose_mixed_protocol_map.schema.json +21 -0
- package/certification/geospatial-mcp-schemas/tools/create_app_package.schema.json +33 -0
- package/certification/geospatial-mcp-schemas/tools/create_map_package.schema.json +41 -0
- package/certification/geospatial-mcp-schemas/tools/execute_plan.schema.json +64 -0
- package/certification/geospatial-mcp-schemas/tools/geocode_address.schema.json +36 -0
- package/certification/geospatial-mcp-schemas/tools/get_style.schema.json +30 -0
- package/certification/geospatial-mcp-schemas/tools/ground_candidates.schema.json +66 -0
- package/certification/geospatial-mcp-schemas/tools/list_capabilities.schema.json +21 -0
- package/certification/geospatial-mcp-schemas/tools/list_layers.schema.json +14 -0
- package/certification/geospatial-mcp-schemas/tools/plan_analysis.schema.json +19 -0
- package/certification/geospatial-mcp-schemas/tools/preview_app_package.schema.json +15 -0
- package/certification/geospatial-mcp-schemas/tools/preview_map_package.schema.json +17 -0
- package/certification/geospatial-mcp-schemas/tools/preview_package.schema.json +40 -0
- package/certification/geospatial-mcp-schemas/tools/propose_operation.schema.json +28 -0
- package/certification/geospatial-mcp-schemas/tools/publish_result.schema.json +29 -0
- package/certification/geospatial-mcp-schemas/tools/publish_service.schema.json +59 -0
- package/certification/geospatial-mcp-schemas/tools/query_features.schema.json +54 -0
- package/certification/geospatial-mcp-schemas/tools/refine_map_package.schema.json +22 -0
- package/certification/geospatial-mcp-schemas/tools/render_map.schema.json +55 -0
- package/certification/geospatial-mcp-schemas/tools/resolve_entity.schema.json +30 -0
- package/certification/geospatial-mcp-schemas/tools/solve_route.schema.json +39 -0
- package/certification/geospatial-mcp-schemas/tools/validate_package.schema.json +35 -0
- package/certification/geospatial-mcp-schemas/tools/validate_plan.schema.json +61 -0
- package/dist/src/certification/certifier.d.ts +119 -0
- package/dist/src/certification/certifier.d.ts.map +1 -0
- package/dist/src/certification/certifier.js +410 -0
- package/dist/src/certification/cli.d.ts +3 -0
- package/dist/src/certification/cli.d.ts.map +1 -0
- package/dist/src/certification/cli.js +48 -0
- package/dist/src/certification/contracts.d.ts +62 -0
- package/dist/src/certification/contracts.d.ts.map +1 -0
- package/dist/src/certification/contracts.js +174 -0
- package/dist/src/certification/fixture-client.d.ts +4 -0
- package/dist/src/certification/fixture-client.d.ts.map +1 -0
- package/dist/src/certification/fixture-client.js +113 -0
- package/dist/src/certification/fixtures.d.ts +32 -0
- package/dist/src/certification/fixtures.d.ts.map +1 -0
- package/dist/src/certification/fixtures.js +64 -0
- package/dist/src/certification/json-schema.d.ts +49 -0
- package/dist/src/certification/json-schema.d.ts.map +1 -0
- package/dist/src/certification/json-schema.js +164 -0
- package/dist/src/certification/mock-upstream.d.ts +29 -0
- package/dist/src/certification/mock-upstream.d.ts.map +1 -0
- package/dist/src/certification/mock-upstream.js +96 -0
- package/dist/src/certification/operator-catalog.d.ts +82 -0
- package/dist/src/certification/operator-catalog.d.ts.map +1 -0
- package/dist/src/certification/operator-catalog.js +466 -0
- package/dist/src/certification/report.d.ts +4 -0
- package/dist/src/certification/report.d.ts.map +1 -0
- package/dist/src/certification/report.js +90 -0
- package/dist/src/certification/run.d.ts +28 -0
- package/dist/src/certification/run.d.ts.map +1 -0
- package/dist/src/certification/run.js +31 -0
- package/dist/src/certification/schema-index.d.ts +69 -0
- package/dist/src/certification/schema-index.d.ts.map +1 -0
- package/dist/src/certification/schema-index.js +82 -0
- package/dist/src/certification/target.d.ts +40 -0
- package/dist/src/certification/target.d.ts.map +1 -0
- package/dist/src/certification/target.js +167 -0
- package/dist/src/eval/cli.d.ts +3 -0
- package/dist/src/eval/cli.d.ts.map +1 -0
- package/dist/src/eval/cli.js +116 -0
- package/dist/src/eval/corpus.d.ts +27 -0
- package/dist/src/eval/corpus.d.ts.map +1 -0
- package/dist/src/eval/corpus.js +134 -0
- package/dist/src/eval/drivers/anthropic.d.ts +14 -0
- package/dist/src/eval/drivers/anthropic.d.ts.map +1 -0
- package/dist/src/eval/drivers/anthropic.js +120 -0
- package/dist/src/eval/drivers/bedrock.d.ts +54 -0
- package/dist/src/eval/drivers/bedrock.d.ts.map +1 -0
- package/dist/src/eval/drivers/bedrock.js +178 -0
- package/dist/src/eval/drivers/deterministic.d.ts +17 -0
- package/dist/src/eval/drivers/deterministic.d.ts.map +1 -0
- package/dist/src/eval/drivers/deterministic.js +51 -0
- package/dist/src/eval/drivers/index.d.ts +34 -0
- package/dist/src/eval/drivers/index.d.ts.map +1 -0
- package/dist/src/eval/drivers/index.js +74 -0
- package/dist/src/eval/drivers/openai.d.ts +14 -0
- package/dist/src/eval/drivers/openai.d.ts.map +1 -0
- package/dist/src/eval/drivers/openai.js +136 -0
- package/dist/src/eval/grade.d.ts +14 -0
- package/dist/src/eval/grade.d.ts.map +1 -0
- package/dist/src/eval/grade.js +56 -0
- package/dist/src/eval/northstar-corpus.d.ts +3 -0
- package/dist/src/eval/northstar-corpus.d.ts.map +1 -0
- package/dist/src/eval/northstar-corpus.js +194 -0
- package/dist/src/eval/operator-corpus.d.ts +3 -0
- package/dist/src/eval/operator-corpus.d.ts.map +1 -0
- package/dist/src/eval/operator-corpus.js +193 -0
- package/dist/src/eval/report.d.ts +104 -0
- package/dist/src/eval/report.d.ts.map +1 -0
- package/dist/src/eval/report.js +130 -0
- package/dist/src/eval/runner.d.ts +22 -0
- package/dist/src/eval/runner.d.ts.map +1 -0
- package/dist/src/eval/runner.js +116 -0
- package/dist/src/eval/types.d.ts +93 -0
- package/dist/src/eval/types.d.ts.map +1 -0
- package/dist/src/eval/types.js +10 -0
- package/dist/src/helpers.d.ts +11 -0
- package/dist/src/helpers.d.ts.map +1 -1
- package/dist/src/helpers.js +22 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +30 -4
- package/dist/src/proxy.d.ts +46 -0
- package/dist/src/proxy.d.ts.map +1 -0
- package/dist/src/proxy.js +124 -0
- package/dist/src/resources/styles.d.ts +29 -0
- package/dist/src/resources/styles.d.ts.map +1 -0
- package/dist/src/resources/styles.js +43 -0
- package/dist/src/styles.d.ts +110 -0
- package/dist/src/styles.d.ts.map +1 -0
- package/dist/src/styles.js +118 -0
- package/dist/src/tools/apply-style-preset.d.ts +27 -0
- package/dist/src/tools/apply-style-preset.d.ts.map +1 -0
- package/dist/src/tools/apply-style-preset.js +29 -0
- package/dist/src/tools/count-features.d.ts.map +1 -1
- package/dist/src/tools/count-features.js +5 -4
- package/dist/src/tools/get-extent.d.ts.map +1 -1
- package/dist/src/tools/get-extent.js +6 -4
- package/dist/src/tools/get-style.d.ts +24 -0
- package/dist/src/tools/get-style.d.ts.map +1 -0
- package/dist/src/tools/get-style.js +28 -0
- package/dist/src/tools/query-features.d.ts.map +1 -1
- package/dist/src/tools/query-features.js +4 -1
- package/package.json +19 -4
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://geospatial-mcp.honua.io/spec/schemas/tools/publish_result.schema.json",
|
|
4
|
+
"title": "publish_result inputSchema",
|
|
5
|
+
"description": "Argument shape for publish_result (Analyze, Publish Data, Build App). Promotes a result/package to a canonical promotion-surface target: PublishedService for Analyze and Publish Data, Deployment for Build App (resources.md §Promotion-Surface Resources). Publish/PolicyBoundary clarifications fire before handoff (planning.md). Responsibility-level: concrete promotion field set finalizes upstream (honua-server#730/#732).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": true,
|
|
8
|
+
"required": ["sourceId"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"sourceId": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Identifier of the package or result being promoted (result_…, map_…, app_…)."
|
|
13
|
+
},
|
|
14
|
+
"targetKind": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Promotion-surface target family. published_service for Analyze and Publish Data; deployment for Build App.",
|
|
17
|
+
"enum": ["published_service", "deployment"]
|
|
18
|
+
},
|
|
19
|
+
"visibility": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Promotion visibility scope.",
|
|
22
|
+
"enum": ["workspace_shared", "public"]
|
|
23
|
+
},
|
|
24
|
+
"routePrefix": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "Optional route prefix for a deployment target."
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://geospatial-mcp.honua.io/spec/schemas/tools/publish_service.schema.json",
|
|
4
|
+
"title": "publish_service inputSchema",
|
|
5
|
+
"description": "Argument shape for the lifecycle service-publish tool (advertised name honua_publish_service). Publishes a table from a registered secure connection as a layer on a target service via the canonical service.publish operation. x-honua-reference-shape: tracks the reference implementation.",
|
|
6
|
+
"x-honua-reference-shape": true,
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": ["connectionId", "schema", "table", "layerName"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"connectionId": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Secure-connection identifier whose table is published. Required: the canonical service.publish operation resolves the target database connection from it."
|
|
13
|
+
},
|
|
14
|
+
"schema": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"minLength": 1,
|
|
17
|
+
"description": "Source schema containing the table to publish."
|
|
18
|
+
},
|
|
19
|
+
"table": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"minLength": 1,
|
|
22
|
+
"description": "Source table to publish as a layer."
|
|
23
|
+
},
|
|
24
|
+
"layerName": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"minLength": 1,
|
|
27
|
+
"description": "Display name for the published layer."
|
|
28
|
+
},
|
|
29
|
+
"serviceName": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"description": "Target service name. Defaults to the canonical default service when omitted."
|
|
32
|
+
},
|
|
33
|
+
"description": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "Optional layer description."
|
|
36
|
+
},
|
|
37
|
+
"geometryColumn": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "Geometry column to publish when the table has more than one."
|
|
40
|
+
},
|
|
41
|
+
"geometryType": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"description": "Geometry type override (for example Point, Polygon) when it cannot be inferred."
|
|
44
|
+
},
|
|
45
|
+
"srid": {
|
|
46
|
+
"type": "integer",
|
|
47
|
+
"description": "Spatial reference identifier for the published layer."
|
|
48
|
+
},
|
|
49
|
+
"primaryKey": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"description": "Primary key column when the table has no detectable key."
|
|
52
|
+
},
|
|
53
|
+
"fields": {
|
|
54
|
+
"type": "array",
|
|
55
|
+
"items": { "type": "string" },
|
|
56
|
+
"description": "Subset of attribute columns to publish. All columns are published when omitted."
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://geospatial-mcp.honua.io/spec/schemas/tools/query_features.schema.json",
|
|
4
|
+
"title": "query_features inputSchema",
|
|
5
|
+
"description": "Argument shape for the discovery/query feature-query tool (advertised name honua_query_features). Reads features from a published layer with an optional attribute and spatial filter. x-honua-reference-shape: this shape tracks the reference implementation.",
|
|
6
|
+
"x-honua-reference-shape": true,
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": ["serviceId", "layerId"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"serviceId": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"minLength": 1,
|
|
13
|
+
"description": "Published service identifier or name (from list_layers.serviceId)."
|
|
14
|
+
},
|
|
15
|
+
"layerId": {
|
|
16
|
+
"type": "integer",
|
|
17
|
+
"minimum": 0,
|
|
18
|
+
"description": "Service-local layer index (from list_layers.layerId)."
|
|
19
|
+
},
|
|
20
|
+
"where": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"description": "Optional attribute filter expressed as an ArcGIS/SQL WHERE clause."
|
|
23
|
+
},
|
|
24
|
+
"bbox": {
|
|
25
|
+
"type": "array",
|
|
26
|
+
"minItems": 4,
|
|
27
|
+
"maxItems": 4,
|
|
28
|
+
"items": { "type": "number" },
|
|
29
|
+
"description": "Optional spatial filter envelope as [minX, minY, maxX, maxY]."
|
|
30
|
+
},
|
|
31
|
+
"bboxSrid": {
|
|
32
|
+
"type": "integer",
|
|
33
|
+
"default": 4326,
|
|
34
|
+
"description": "Spatial reference (SRID/WKID) of the bbox ordinates."
|
|
35
|
+
},
|
|
36
|
+
"outFields": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"items": { "type": "string" },
|
|
39
|
+
"description": "Optional attribute fields to return; omit for all fields."
|
|
40
|
+
},
|
|
41
|
+
"limit": {
|
|
42
|
+
"type": "integer",
|
|
43
|
+
"minimum": 1,
|
|
44
|
+
"maximum": 1000,
|
|
45
|
+
"default": 100,
|
|
46
|
+
"description": "Maximum number of features to return (capped at 1000)."
|
|
47
|
+
},
|
|
48
|
+
"outSrid": {
|
|
49
|
+
"type": "integer",
|
|
50
|
+
"default": 4326,
|
|
51
|
+
"description": "Output spatial reference (SRID/WKID) for returned geometries."
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://geospatial-mcp.honua.io/spec/schemas/tools/refine_map_package.schema.json",
|
|
4
|
+
"title": "refine_map_package inputSchema",
|
|
5
|
+
"description": "Argument shape for refine_map_package (Analyze, Build App; returns the updated MapPackage). Refines an existing map package's composition. Responsibility-level: targets a mapPackageId and carries a refinement delta whose concrete field set finalizes upstream (honua-server#731). See taxonomy.md §Map composition.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": true,
|
|
8
|
+
"required": ["mapPackageId"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"mapPackageId": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Identifier (map_…) of the MapPackage to refine."
|
|
13
|
+
},
|
|
14
|
+
"styleId": { "type": "string" },
|
|
15
|
+
"themeId": { "type": "string" },
|
|
16
|
+
"sourceBindings": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": { "type": "object", "additionalProperties": true }
|
|
19
|
+
},
|
|
20
|
+
"initialView": { "type": "object", "additionalProperties": true }
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://geospatial-mcp.honua.io/spec/schemas/tools/render_map.schema.json",
|
|
4
|
+
"title": "render_map inputSchema",
|
|
5
|
+
"description": "Argument shape for the map-render tool (advertised name honua_render_map). Renders an image of ordered layers over an extent. This is the reference implementation's read-only map preview surface, distinct from the semantic map-composition family (create_map_package, etc.). x-honua-reference-shape: this shape tracks the reference implementation.",
|
|
6
|
+
"x-honua-reference-shape": true,
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": ["layers", "bbox"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"layers": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"minItems": 1,
|
|
13
|
+
"description": "Ordered layers to draw, bottom-to-top.",
|
|
14
|
+
"items": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"required": ["serviceId", "layerId"],
|
|
17
|
+
"properties": {
|
|
18
|
+
"serviceId": { "type": "string", "minLength": 1 },
|
|
19
|
+
"layerId": { "type": "integer", "minimum": 0 }
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"bbox": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"minItems": 4,
|
|
26
|
+
"maxItems": 4,
|
|
27
|
+
"items": { "type": "number" },
|
|
28
|
+
"description": "Map extent as [minX, minY, maxX, maxY]."
|
|
29
|
+
},
|
|
30
|
+
"bboxSrid": {
|
|
31
|
+
"type": "integer",
|
|
32
|
+
"default": 4326,
|
|
33
|
+
"description": "Spatial reference (SRID/WKID) of the bbox and output image."
|
|
34
|
+
},
|
|
35
|
+
"width": {
|
|
36
|
+
"type": "integer",
|
|
37
|
+
"minimum": 1,
|
|
38
|
+
"maximum": 1024,
|
|
39
|
+
"default": 512,
|
|
40
|
+
"description": "Output image width in pixels (capped at 1024)."
|
|
41
|
+
},
|
|
42
|
+
"height": {
|
|
43
|
+
"type": "integer",
|
|
44
|
+
"minimum": 1,
|
|
45
|
+
"maximum": 1024,
|
|
46
|
+
"default": 512,
|
|
47
|
+
"description": "Output image height in pixels (capped at 1024)."
|
|
48
|
+
},
|
|
49
|
+
"transparent": {
|
|
50
|
+
"type": "boolean",
|
|
51
|
+
"default": false,
|
|
52
|
+
"description": "Render a transparent background instead of an opaque one."
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://geospatial-mcp.honua.io/spec/schemas/tools/resolve_entity.schema.json",
|
|
4
|
+
"title": "resolve_entity inputSchema",
|
|
5
|
+
"description": "Argument shape for resolving a natural-language name or phrase to concrete catalog entity references (services/layers). The bare standard taxonomy models entity resolution as a CapabilityCatalog/grounding read; the reference implementation exposes it as a discrete tool (advertised name honua_resolve_entity). x-honua-extension: this is a documented Honua extension over the bare taxonomy, pending formalization in the geospatial-mcp standard. x-honua-reference-shape: this shape tracks the reference implementation.",
|
|
6
|
+
"x-honua-extension": true,
|
|
7
|
+
"x-honua-reference-shape": true,
|
|
8
|
+
"type": "object",
|
|
9
|
+
"required": ["text"],
|
|
10
|
+
"properties": {
|
|
11
|
+
"text": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"minLength": 1,
|
|
14
|
+
"description": "Natural-language name or phrase to resolve to catalog entities (e.g. \"parcels\", \"flood zones\", \"roads\")."
|
|
15
|
+
},
|
|
16
|
+
"entityType": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"enum": ["any", "service", "layer"],
|
|
19
|
+
"default": "any",
|
|
20
|
+
"description": "Restrict matches to services, to layers, or to both (default)."
|
|
21
|
+
},
|
|
22
|
+
"limit": {
|
|
23
|
+
"type": "integer",
|
|
24
|
+
"minimum": 1,
|
|
25
|
+
"maximum": 50,
|
|
26
|
+
"default": 10,
|
|
27
|
+
"description": "Maximum number of ranked matches to return (capped at 50)."
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://geospatial-mcp.honua.io/spec/schemas/tools/solve_route.schema.json",
|
|
4
|
+
"title": "solve_route inputSchema",
|
|
5
|
+
"description": "Argument shape for the analysis/geoprocessing routing tool (advertised name honua_solve_route). Solves an ordered route through a sequence of stops. x-honua-reference-shape: this shape tracks the reference implementation.",
|
|
6
|
+
"x-honua-reference-shape": true,
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": ["stops"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"stops": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"minItems": 2,
|
|
13
|
+
"maxItems": 25,
|
|
14
|
+
"description": "Ordered stops to route through, in visit order.",
|
|
15
|
+
"items": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"required": ["lon", "lat"],
|
|
18
|
+
"properties": {
|
|
19
|
+
"lon": { "type": "number", "description": "Longitude (X) ordinate." },
|
|
20
|
+
"lat": { "type": "number", "description": "Latitude (Y) ordinate." }
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"travelProfile": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"default": "driving",
|
|
27
|
+
"description": "Travel profile / cost-model selector (e.g. \"driving\", \"walking\")."
|
|
28
|
+
},
|
|
29
|
+
"outSrid": {
|
|
30
|
+
"type": "integer",
|
|
31
|
+
"default": 4326,
|
|
32
|
+
"description": "Output spatial reference (SRID/WKID) for the returned route geometry."
|
|
33
|
+
},
|
|
34
|
+
"inSrid": {
|
|
35
|
+
"type": "integer",
|
|
36
|
+
"description": "Spatial reference of the input stop ordinates; defaults to outSrid."
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://geospatial-mcp.honua.io/spec/schemas/tools/validate_package.schema.json",
|
|
4
|
+
"title": "validate_package inputSchema",
|
|
5
|
+
"description": "Argument shape for the read-only composition-review tool (advertised name honua_validate_package). Inspects a map/app package's requirement coverage (data bindings, permissions, schema, CRS, capabilities, dependencies, approvals) and returns canonical findings without mutating server state. x-honua-reference-shape: tracks the reference implementation; the bare taxonomy models package review as a CapabilityCatalog + resource read.",
|
|
6
|
+
"x-honua-reference-shape": true,
|
|
7
|
+
"type": "object",
|
|
8
|
+
"properties": {
|
|
9
|
+
"contractVersion": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Package-review contract version. Current value is honua.package_review.v1."
|
|
12
|
+
},
|
|
13
|
+
"packageFamily": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "Supported values are query, analysis_plan, map_package, dashboard_report, form, app_package, workflow, gp, and etl. Missing or unknown values are returned as canonical missing_package_family or unsupported_package_family findings rather than rejected by the schema."
|
|
16
|
+
},
|
|
17
|
+
"packageId": { "type": "string" },
|
|
18
|
+
"requestedAction": { "type": "string" },
|
|
19
|
+
"format": { "type": "string" },
|
|
20
|
+
"packagePayload": {
|
|
21
|
+
"type": ["object", "array", "string", "number", "boolean", "null"],
|
|
22
|
+
"description": "Opaque package payload inspected only by the matching package-family adapter."
|
|
23
|
+
},
|
|
24
|
+
"requirements": {
|
|
25
|
+
"type": ["object", "null"],
|
|
26
|
+
"description": "Shared data binding, permission, schema, CRS, capability, dependency, and approval requirements. An explicit null is normalized to an empty requirement set."
|
|
27
|
+
},
|
|
28
|
+
"includePassFindings": { "type": "boolean" },
|
|
29
|
+
"resourceRefs": {
|
|
30
|
+
"type": ["object", "null"],
|
|
31
|
+
"additionalProperties": { "type": "string" },
|
|
32
|
+
"description": "Safe caller-visible resource references. An explicit null is normalized to an empty map."
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://geospatial-mcp.honua.io/spec/schemas/tools/validate_plan.schema.json",
|
|
4
|
+
"title": "validate_plan inputSchema",
|
|
5
|
+
"description": "Argument shape for the validate_plan tool (Analyze, Publish Data, Build App; also shared by the dry_run_plan preview tool in the reference implementation). Reference advertised name: honua_validate_plan. Accepts a partial AnalysisPlan so the validator can report EMPTY_PLAN_ID / EMPTY_STEPS as structured violations rather than rejecting at ingest — planId and steps are therefore NOT required here (contrast execute_plan). See planning.md §5.1.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["plan"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"plan": { "$ref": "#/$defs/analysisPlan" }
|
|
10
|
+
},
|
|
11
|
+
"$defs": {
|
|
12
|
+
"analysisPlan": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"description": "Canonical AnalysisPlan expressed as MCP plan input. Partial plans are permitted at validate time.",
|
|
15
|
+
"required": [],
|
|
16
|
+
"properties": {
|
|
17
|
+
"planId": { "type": "string" },
|
|
18
|
+
"intentId": { "type": "string" },
|
|
19
|
+
"steps": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"items": { "$ref": "#/$defs/planStep" }
|
|
22
|
+
},
|
|
23
|
+
"outputs": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"items": { "$ref": "#/$defs/artifactKind" }
|
|
26
|
+
},
|
|
27
|
+
"warnings": {
|
|
28
|
+
"type": "array",
|
|
29
|
+
"items": { "type": "string" }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"planStep": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"required": ["stepId", "kind"],
|
|
36
|
+
"properties": {
|
|
37
|
+
"stepId": { "type": "string" },
|
|
38
|
+
"kind": { "$ref": "#/$defs/planStepKind" },
|
|
39
|
+
"processId": { "type": "string" },
|
|
40
|
+
"inputs": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"additionalProperties": { "type": "string" }
|
|
43
|
+
},
|
|
44
|
+
"dependsOn": {
|
|
45
|
+
"type": "array",
|
|
46
|
+
"items": { "type": "string" }
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"planStepKind": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"description": "Canonical AnalysisPlanStepKind value. Server parsing is case-insensitive but clients should send the canonical PascalCase spelling.",
|
|
53
|
+
"enum": ["QueryFeatures", "Geoprocess", "Aggregate", "RenderMap", "Export"]
|
|
54
|
+
},
|
|
55
|
+
"artifactKind": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"description": "Canonical ArtifactKind value.",
|
|
58
|
+
"enum": ["Scalar", "FeatureLayer", "Table", "Raster", "File", "Report", "Map", "AppBundle"]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
|
+
import { AUTH_ERROR_CODES } from "./contracts.js";
|
|
3
|
+
import type { CertTargetMode } from "./target.js";
|
|
4
|
+
/** Per-tool certification record (machine-readable). */
|
|
5
|
+
export interface ToolCertification {
|
|
6
|
+
name: string;
|
|
7
|
+
discovered: true;
|
|
8
|
+
/** inputSchema is structurally valid JSON Schema (draft 2020-12 dialect). */
|
|
9
|
+
schemaValid: boolean;
|
|
10
|
+
/** Whether the server advertises a structured-output schema for this tool. */
|
|
11
|
+
hasOutputSchema: boolean;
|
|
12
|
+
/** Matched standard tool (by referenceToolName / alias), if any. */
|
|
13
|
+
standardName: string | null;
|
|
14
|
+
/** Conformant to the matched standard schema. `null` when no standard match. */
|
|
15
|
+
conformant: boolean | null;
|
|
16
|
+
/** Server-advertised read-only hint; round-trip only runs for read-only tools. */
|
|
17
|
+
readOnly: boolean;
|
|
18
|
+
/** Round-trip outcome. `skipped` when not read-only or no fixture input. */
|
|
19
|
+
roundTrip: "passed" | "failed" | "skipped";
|
|
20
|
+
/** Whether structuredContent validated against the advertised outputSchema. `null` when not exercised. */
|
|
21
|
+
structuredOutputValidated: boolean | null;
|
|
22
|
+
errors: string[];
|
|
23
|
+
notes: string[];
|
|
24
|
+
}
|
|
25
|
+
/** Per-resource certification record. */
|
|
26
|
+
export interface ResourceCertification {
|
|
27
|
+
name: string;
|
|
28
|
+
uri: string;
|
|
29
|
+
discovered: true;
|
|
30
|
+
}
|
|
31
|
+
/** A standard capability advertised by the spec but not implemented here. */
|
|
32
|
+
export interface KnownGap {
|
|
33
|
+
kind: "standard-tool" | "advertised-tool";
|
|
34
|
+
name: string;
|
|
35
|
+
family?: string;
|
|
36
|
+
detail: string;
|
|
37
|
+
}
|
|
38
|
+
/** A cross-cutting contract check against the certified surface. */
|
|
39
|
+
export interface ContractCheck {
|
|
40
|
+
contract: "output-schema" | "error-shape" | "auth-unauthenticated" | "list-pagination";
|
|
41
|
+
target: string;
|
|
42
|
+
status: "passed" | "failed" | "skipped";
|
|
43
|
+
detail: string;
|
|
44
|
+
}
|
|
45
|
+
export interface CertificationReport {
|
|
46
|
+
schemaVersion: 2;
|
|
47
|
+
generatedAt: string;
|
|
48
|
+
server: {
|
|
49
|
+
name: string;
|
|
50
|
+
version: string;
|
|
51
|
+
};
|
|
52
|
+
protocol: {
|
|
53
|
+
mcpTransport: string;
|
|
54
|
+
honuaTransport: string | null;
|
|
55
|
+
backend: "mock-upstream" | "live";
|
|
56
|
+
targetMode: CertTargetMode;
|
|
57
|
+
surface: string;
|
|
58
|
+
};
|
|
59
|
+
standard: {
|
|
60
|
+
source: string;
|
|
61
|
+
indexDate: string;
|
|
62
|
+
dialect: string;
|
|
63
|
+
};
|
|
64
|
+
summary: {
|
|
65
|
+
pass: boolean;
|
|
66
|
+
toolsDiscovered: number;
|
|
67
|
+
toolsSchemaValid: number;
|
|
68
|
+
toolsConformanceChecked: number;
|
|
69
|
+
toolsConformant: number;
|
|
70
|
+
toolsRoundTripped: number;
|
|
71
|
+
toolsOutputValidated: number;
|
|
72
|
+
resourcesDiscovered: number;
|
|
73
|
+
promptsDiscovered: number;
|
|
74
|
+
contractsChecked: number;
|
|
75
|
+
contractsPassed: number;
|
|
76
|
+
contractsFailed: number;
|
|
77
|
+
knownGaps: number;
|
|
78
|
+
failures: number;
|
|
79
|
+
};
|
|
80
|
+
tools: ToolCertification[];
|
|
81
|
+
resources: ResourceCertification[];
|
|
82
|
+
prompts: {
|
|
83
|
+
name: string;
|
|
84
|
+
discovered: true;
|
|
85
|
+
}[];
|
|
86
|
+
contracts: ContractCheck[];
|
|
87
|
+
knownGaps: KnownGap[];
|
|
88
|
+
}
|
|
89
|
+
export interface CertifyOptions {
|
|
90
|
+
/** Authenticated, connected MCP client to certify. */
|
|
91
|
+
client: Client;
|
|
92
|
+
/** Which target the client is connected to. */
|
|
93
|
+
targetMode: CertTargetMode;
|
|
94
|
+
/** Backend behind the surface (mock upstream or a live server). */
|
|
95
|
+
backend: "mock-upstream" | "live";
|
|
96
|
+
/** Human-readable label of the certified surface. */
|
|
97
|
+
surface: string;
|
|
98
|
+
/** Logical Honua backend transport for the artifact, if known. */
|
|
99
|
+
honuaTransport?: string | null;
|
|
100
|
+
/** Open a fresh, unauthenticated client for the auth contract (optional). */
|
|
101
|
+
connectUnauthenticated?: (() => Promise<Client>) | undefined;
|
|
102
|
+
/** Environment used to resolve round-trip identifiers. */
|
|
103
|
+
env?: NodeJS.ProcessEnv;
|
|
104
|
+
}
|
|
105
|
+
/** Determine whether a discovered tool is safe to round-trip (read-only). */
|
|
106
|
+
export declare function isReadOnlyTool(tool: {
|
|
107
|
+
name: string;
|
|
108
|
+
annotations?: {
|
|
109
|
+
readOnlyHint?: boolean;
|
|
110
|
+
};
|
|
111
|
+
}): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Connect an MCP client to the certified surface and produce a deterministic
|
|
114
|
+
* certification report. The client is already connected (offline mock upstream,
|
|
115
|
+
* a live `/mcp`, or the stdio proxy); certify never owns its lifecycle.
|
|
116
|
+
*/
|
|
117
|
+
export declare function certify(options: CertifyOptions): Promise<CertificationReport>;
|
|
118
|
+
export { AUTH_ERROR_CODES };
|
|
119
|
+
//# sourceMappingURL=certifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certifier.d.ts","sourceRoot":"","sources":["../../../src/certification/certifier.ts"],"names":[],"mappings":"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"}
|