Monorepo containing multiple MCP servers and services for geospatial AI agent routing, compliance, and governance. Includes MCP servers for PostGIS, GDAL, perception/satellite tile pipelines, audit trails, and AWS AgentCore runtime integration.
The server exposes only 1 tool (gns_get_compliance_report). The tool has a reasonable 107-character description, but critical quality issues prevent it from scoring higher. The input schema is visible but severely incomplete: the 'agentHandle' parameter is marked as not required (required=false) despite being the primary identifier for a compliance report lookup. No output schema is documented anywhere in the visible source code. The tool description does not explain what fields are returned, when to use it instead of alternatives, or what prerequisites exist. The parameter lacks a proper description in the schema, only a single example is provided ('energy@italy-geiant'), which violates the anti-example principle. The server is HTTP-based (good for protocol readiness), but lacks proper error handling guidance, output schema documentation, and validation constraints. The tool appears to be a thin wrapper around a backend API with no visible defensive input validation or error recovery patterns.
Returns a full EU AI Act compliance report for a GNS agent, including trust score, chain verification, Merkle epoch proofs, delegation certificate, and regulatory status.
No output schema documented. The tool description states what fields are returned ('trust score, chain verification, Merkle epoch proofs, delegation certificate, and regulatory status') but does not provide a formal JSON Schema for the response. LLMs cannot plan downstream operations or extract structured data without knowing the response schema.
Input parameter is marked as not required (required=false) but is the primary identifier for the tool. A compliance report lookup with no agentHandle is ambiguous, what does it return? The schema should mark this required=true or explain the behavior when omitted.
Parameter description violates the anti-example principle. The schema includes 'energy@italy-geiant' as an example in the description field. LLMs tend to reuse example values literally in real calls, causing failures when the agent tries to query a non-existent handle. Use enums or pattern constraints instead.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2025-06-18+ | v2 |
| 2026-03-09 | D | 53 | - | v1 |
No error handling guidance. The tool description does not explain what happens if the agentHandle is not found, if trust validation fails, or if the compliance report is unavailable. LLMs need recovery guidance: 'If agent not found, try searching via search_agents() first' or 'If trust score is unavailable, the compliance system may be offline, retry or contact support.'
No parameter validation constraints. The parameter description does not specify format (regex), length limits, or character restrictions. What characters are valid in an agentHandle? Must it match the pattern 'word@word-word' or similar? Without formal constraints, LLMs may pass invalid handles.