AVAILABLE

Developer Tools

GeoJSON Inspect & Geometry Guard

Inspect, normalize, bound, point-test, and apply explicit policy to RFC 7946 GeoJSON without fetching maps, geocoding, transforming a CRS, or storing payloads.

CONTRACT

Predictable for agents. Legible for reviewers.

REST
POST /v1/geojson/policy-check
MCP tool
check_geojson_policy
Inputs
One GeoJSON object or strict JSON string up to 512 KiB. Operations enforce 5,000 features, 250,000 positions, 64 levels, bounded findings, and explicit precision, topology, bbox, winding, antimeridian, and property policies.
Returns
CLEAR, REVIEW_REQUIRED, or BLOCKED with counts, geometry types, calculated bbox, topology and antimeridian evidence, hashes, named findings, and an agent-readable next action.
Latency
Synchronous
Usage unit
GeoJSON operation

The suite also exposes /v1/geojson/inspect, /v1/geojson/normalize, /v1/geojson/bbox, and /v1/geojson/point-test plus /mcp/geojson. It follows RFC 7946 longitude/latitude axis order. Point predicates are planar and reject antimeridian-spanning geometry; they are not geodesic, cadastral, routing, geocoding, or map-data decisions.

AGENT-READABLE EXCEPTIONS

GEOJSON_PARSE_ERRORGEOJSON_CRS_MEMBER_FORBIDDENGEOJSON_COORDINATE_RANGE_INVALIDGEOJSON_TOPOLOGY_INVALIDGEOJSON_ANTIMERIDIAN_UNSUPPORTEDGEOJSON_PRECISION_NOT_ALLOWEDGEOJSON_PROPERTY_NOT_ALLOWEDGEOJSON_OUTPUT_TOO_LARGE
HTTP request
POST /v1/geojson/policy-check
Authorization: Bearer apc_...
Content-Type: application/json

{
  "document": {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "properties": {
          "site_id": "DEN-1"
        },
        "geometry": {
          "type": "Point",
          "coordinates": [
            -104.9903,
            39.7392
          ]
        }
      }
    ]
  },
  "allowed_types": [
    "FeatureCollection"
  ],
  "max_features": 100,
  "max_positions": 10000,
  "max_coordinate_precision": 6,
  "require_valid_topology": true,
  "allow_null_geometry": false,
  "allow_antimeridian": false,
  "allowed_property_names": [
    "site_id"
  ],
  "require_property_allowlist": true
}
cURL (bash)
curl --request POST \
  --url 'https://api-production-9502.up.railway.app/v1/geojson/policy-check' \
  --header 'Authorization: Bearer ${AP_CONTROL_API_KEY}' \
  --header 'Content-Type: application/json' \
  --data '{
  "document": {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "properties": {
          "site_id": "DEN-1"
        },
        "geometry": {
          "type": "Point",
          "coordinates": [
            -104.9903,
            39.7392
          ]
        }
      }
    ]
  },
  "allowed_types": [
    "FeatureCollection"
  ],
  "max_features": 100,
  "max_positions": 10000,
  "max_coordinate_precision": 6,
  "require_valid_topology": true,
  "allow_null_geometry": false,
  "allow_antimeridian": false,
  "allowed_property_names": [
    "site_id"
  ],
  "require_property_allowlist": true
}'
Representative response
{
  "status": "COMPLETED",
  "decision": "CLEAR",
  "permitted": true,
  "metadata": {
    "root_type": "FeatureCollection",
    "feature_count": 1,
    "geometry_count": 1,
    "position_count": 1,
    "geometry_types": [
      "Point"
    ],
    "dimensions": [
      2
    ],
    "max_coordinate_precision": 4,
    "calculated_bbox": [
      -104.9903,
      39.7392,
      -104.9903,
      39.7392
    ],
    "crosses_antimeridian": false,
    "source_sha256": "83c1...",
    "canonical_sha256": "83c1..."
  },
  "findings": [],
  "ruleset_version": "2026-08-11",
  "static_analysis_only": true,
  "geocoding_performed": false,
  "crs_transformed": false,
  "network_access_performed": false,
  "payload_stored": false,
  "next_action": "Continue only within the supplied static policy; validate downstream map, privacy, and authorization requirements separately."
}
RFC 7946 onlyCoordinates use WGS 84 longitude/latitude axis order; legacy CRS members and out-of-range positions are blocked.
Planar point semanticsPoint tests reject antimeridian-spanning geometry and are not an authoritative geodesic engine.
No map, geocoding, or CRS transformationThe API processes only the supplied bounded payload in memory and stores nothing.

Use GeoJSON Inspect & Geometry Guard through RapidAPI.

Choose a capped marketplace plan, copy the generated request, and route the structured result through your own authorized workflow.