naftiko: 1.0.0-alpha2 info: label: Microsoft Azure Azure Maps Spatial Service — Spatial description: 'Microsoft Azure Azure Maps Spatial Service — Spatial. 9 operations. Lead operation: Microsoft Azure Post Spatial Buffer Format. Self-contained Naftiko capability covering one Microsoft Azure business surface.' tags: - Microsoft Azure - Spatial created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: MICROSOFT_AZURE_API_KEY: MICROSOFT_AZURE_API_KEY capability: consumes: - type: http namespace: azure-maps-spatial-service-spatial baseUri: https://atlas.microsoft.com description: Microsoft Azure Azure Maps Spatial Service — Spatial business capability. Self-contained, no shared references. resources: - name: spatial-buffer-format path: /spatial/buffer/{format} operations: - name: microsoftazurespatialpostbuffer method: POST description: Microsoft Azure Post Spatial Buffer Format outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: bufferRequestBody in: body type: string description: The FeatureCollection and the list of distances (one per feature or one for all features). required: true - name: microsoftazurespatialgetbuffer method: GET description: Microsoft Azure Get Spatial Buffer Format outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: distances in: query type: string description: The list of distances (one per feature or one for all features), delimited by semicolons. For example, 12.34;-56.78. Positive distance will generate a buffer ou required: true - name: spatial-closestPoint-format path: /spatial/closestPoint/{format} operations: - name: microsoftazurespatialpostclosestpoint method: POST description: Microsoft Azure Post Spatial Closestpoint Format outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: lat in: query type: number description: 'The base point latitude of the location being passed. Example: 47.622942.' required: true - name: lon in: query type: number description: 'The base point longitude of the location being passed. Example: -122.316456.' required: true - name: numberOfClosestPoints in: query type: integer description: 'The number of closest points expected from response. Default: 1, minimum: 1 and maximum: 50' - name: closestPointRequestBody in: body type: string description: The FeatureCollection of Point geometries from which closest point to source point should be determined. All the feature's properties should contain `geometryId required: true - name: microsoftazurespatialgetclosestpoint method: GET description: Microsoft Azure Get Spatial Closestpoint Format outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: lat in: query type: number description: 'The base point latitude of the location being passed. Example: 47.622942.' required: true - name: lon in: query type: number description: 'The base point longitude of the location being passed. Example: -122.316456.' required: true - name: numberOfClosestPoints in: query type: integer description: 'The number of closest points expected from response. Default: 1, minimum: 1 and maximum: 50' - name: spatial-geofence-format path: /spatial/geofence/{format} operations: - name: microsoftazurespatialgetgeofence method: GET description: Microsoft Azure Get Spatial Geofence Format outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: deviceId in: query type: string description: ID of the device required: true - name: udId in: query type: string description: The unique id returned from [Data Upload API](https://docs.microsoft.com/en-us/rest/api/maps/data/uploadPreview) after uploading a valid GeoJSON FeatureCollecti required: true - name: lat in: query type: number description: 'The latitude of the location being passed. Example: 48.36.' required: true - name: lon in: query type: number description: 'The longitude of the location being passed. Example: -124.63.' required: true - name: z in: query type: number description: 'The sea level in meter of the location being passed. If this parameter is presented, 2D extrusion is used. Example: 200.' - name: userTime in: query type: string description: The user request time. If not presented in the request, the default value is DateTime.Now. - name: searchBuffer in: query type: number description: The radius of the buffer around the geofence in meters that defines how far to search inside and outside the border of the fence against the coordinate that was - name: isAsync in: query type: boolean description: If true, the request will use async event mechanism; if false, the request will be synchronized and do not trigger any event. The default value is false. - name: microsoftazurespatialpostgeofence method: POST description: Microsoft Azure Post Spatial Geofence Format outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: deviceId in: query type: string description: ID of the device required: true - name: lat in: query type: number description: 'The latitude of the location being passed. Example: 48.36.' required: true - name: lon in: query type: number description: 'The longitude of the location being passed. Example: -124.63.' required: true - name: z in: query type: number description: 'The sea level in meter of the location being passed. If this parameter is presented, 2D extrusion geofencing is applied. Example: 200.' - name: userTime in: query type: string description: The user request time. If not presented in the request, the default value is DateTime.UtcNow. - name: searchBuffer in: query type: number description: The radius of the buffer around the geofence in meters that defines how far to search inside and outside the border of the fence against the coordinate that was - name: isAsync in: query type: boolean description: If true, the request will use async event mechanism; if false, the request will be synchronized and do not trigger any event. The default value is false. - name: searchGeofenceRequestBody in: body type: string description: The geofencing GeoJSON data. required: true - name: spatial-greatCircleDistance-format path: /spatial/greatCircleDistance/{format} operations: - name: microsoftazurespatialgetgreatcircledistance method: GET description: Microsoft Azure Get Spatial Greatcircledistance Format outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: query in: query type: string description: 'The Coordinates through which the distance is calculated, delimited by a colon. Two coordinates are required. The first one is the source point coordinate and ' required: true - name: spatial-pointInPolygon-format path: /spatial/pointInPolygon/{format} operations: - name: microsoftazurespatialpostpointinpolygon method: POST description: Microsoft Azure Post Spatial Pointinpolygon Format outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: lat in: query type: number description: 'The base point latitude of the location being passed. Example: 47.622942.' required: true - name: lon in: query type: number description: 'The base point longitude of the location being passed. Example: -122.316456.' required: true - name: pointInPolygonRequestBody in: body type: string description: A FeatureCollection with a set of Polygon/MultiPolygon geometries. The maximum number of vertices accepted to form a Polygon is 10,000. All the feature's proper required: true - name: microsoftazurespatialgetpointinpolygon method: GET description: Microsoft Azure Get Spatial Pointinpolygon Format outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: lat in: query type: number description: 'The base point latitude of the location being passed. Example: 47.622942.' required: true - name: lon in: query type: number description: 'The base point longitude of the location being passed. Example: -122.316456.' required: true exposes: - type: rest namespace: azure-maps-spatial-service-spatial-rest port: 8080 description: REST adapter for Microsoft Azure Azure Maps Spatial Service — Spatial. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/spatial/buffer/{format} name: spatial-buffer-format description: REST surface for spatial-buffer-format. operations: - method: POST name: microsoftazurespatialpostbuffer description: Microsoft Azure Post Spatial Buffer Format call: azure-maps-spatial-service-spatial.microsoftazurespatialpostbuffer with: bufferRequestBody: rest.bufferRequestBody outputParameters: - type: object mapping: $. - method: GET name: microsoftazurespatialgetbuffer description: Microsoft Azure Get Spatial Buffer Format call: azure-maps-spatial-service-spatial.microsoftazurespatialgetbuffer with: distances: rest.distances outputParameters: - type: object mapping: $. - path: /v1/spatial/closestpoint/{format} name: spatial-closestpoint-format description: REST surface for spatial-closestPoint-format. operations: - method: POST name: microsoftazurespatialpostclosestpoint description: Microsoft Azure Post Spatial Closestpoint Format call: azure-maps-spatial-service-spatial.microsoftazurespatialpostclosestpoint with: lat: rest.lat lon: rest.lon numberOfClosestPoints: rest.numberOfClosestPoints closestPointRequestBody: rest.closestPointRequestBody outputParameters: - type: object mapping: $. - method: GET name: microsoftazurespatialgetclosestpoint description: Microsoft Azure Get Spatial Closestpoint Format call: azure-maps-spatial-service-spatial.microsoftazurespatialgetclosestpoint with: lat: rest.lat lon: rest.lon numberOfClosestPoints: rest.numberOfClosestPoints outputParameters: - type: object mapping: $. - path: /v1/spatial/geofence/{format} name: spatial-geofence-format description: REST surface for spatial-geofence-format. operations: - method: GET name: microsoftazurespatialgetgeofence description: Microsoft Azure Get Spatial Geofence Format call: azure-maps-spatial-service-spatial.microsoftazurespatialgetgeofence with: deviceId: rest.deviceId udId: rest.udId lat: rest.lat lon: rest.lon z: rest.z userTime: rest.userTime searchBuffer: rest.searchBuffer isAsync: rest.isAsync outputParameters: - type: object mapping: $. - method: POST name: microsoftazurespatialpostgeofence description: Microsoft Azure Post Spatial Geofence Format call: azure-maps-spatial-service-spatial.microsoftazurespatialpostgeofence with: deviceId: rest.deviceId lat: rest.lat lon: rest.lon z: rest.z userTime: rest.userTime searchBuffer: rest.searchBuffer isAsync: rest.isAsync searchGeofenceRequestBody: rest.searchGeofenceRequestBody outputParameters: - type: object mapping: $. - path: /v1/spatial/greatcircledistance/{format} name: spatial-greatcircledistance-format description: REST surface for spatial-greatCircleDistance-format. operations: - method: GET name: microsoftazurespatialgetgreatcircledistance description: Microsoft Azure Get Spatial Greatcircledistance Format call: azure-maps-spatial-service-spatial.microsoftazurespatialgetgreatcircledistance with: query: rest.query outputParameters: - type: object mapping: $. - path: /v1/spatial/pointinpolygon/{format} name: spatial-pointinpolygon-format description: REST surface for spatial-pointInPolygon-format. operations: - method: POST name: microsoftazurespatialpostpointinpolygon description: Microsoft Azure Post Spatial Pointinpolygon Format call: azure-maps-spatial-service-spatial.microsoftazurespatialpostpointinpolygon with: lat: rest.lat lon: rest.lon pointInPolygonRequestBody: rest.pointInPolygonRequestBody outputParameters: - type: object mapping: $. - method: GET name: microsoftazurespatialgetpointinpolygon description: Microsoft Azure Get Spatial Pointinpolygon Format call: azure-maps-spatial-service-spatial.microsoftazurespatialgetpointinpolygon with: lat: rest.lat lon: rest.lon outputParameters: - type: object mapping: $. - type: mcp namespace: azure-maps-spatial-service-spatial-mcp port: 9090 transport: http description: MCP adapter for Microsoft Azure Azure Maps Spatial Service — Spatial. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: microsoft-azure-post-spatial-buffer description: Microsoft Azure Post Spatial Buffer Format hints: readOnly: false destructive: false idempotent: false call: azure-maps-spatial-service-spatial.microsoftazurespatialpostbuffer with: bufferRequestBody: tools.bufferRequestBody outputParameters: - type: object mapping: $. - name: microsoft-azure-get-spatial-buffer description: Microsoft Azure Get Spatial Buffer Format hints: readOnly: true destructive: false idempotent: true call: azure-maps-spatial-service-spatial.microsoftazurespatialgetbuffer with: distances: tools.distances outputParameters: - type: object mapping: $. - name: microsoft-azure-post-spatial-closestpoint description: Microsoft Azure Post Spatial Closestpoint Format hints: readOnly: false destructive: false idempotent: false call: azure-maps-spatial-service-spatial.microsoftazurespatialpostclosestpoint with: lat: tools.lat lon: tools.lon numberOfClosestPoints: tools.numberOfClosestPoints closestPointRequestBody: tools.closestPointRequestBody outputParameters: - type: object mapping: $. - name: microsoft-azure-get-spatial-closestpoint description: Microsoft Azure Get Spatial Closestpoint Format hints: readOnly: true destructive: false idempotent: true call: azure-maps-spatial-service-spatial.microsoftazurespatialgetclosestpoint with: lat: tools.lat lon: tools.lon numberOfClosestPoints: tools.numberOfClosestPoints outputParameters: - type: object mapping: $. - name: microsoft-azure-get-spatial-geofence description: Microsoft Azure Get Spatial Geofence Format hints: readOnly: true destructive: false idempotent: true call: azure-maps-spatial-service-spatial.microsoftazurespatialgetgeofence with: deviceId: tools.deviceId udId: tools.udId lat: tools.lat lon: tools.lon z: tools.z userTime: tools.userTime searchBuffer: tools.searchBuffer isAsync: tools.isAsync outputParameters: - type: object mapping: $. - name: microsoft-azure-post-spatial-geofence description: Microsoft Azure Post Spatial Geofence Format hints: readOnly: false destructive: false idempotent: false call: azure-maps-spatial-service-spatial.microsoftazurespatialpostgeofence with: deviceId: tools.deviceId lat: tools.lat lon: tools.lon z: tools.z userTime: tools.userTime searchBuffer: tools.searchBuffer isAsync: tools.isAsync searchGeofenceRequestBody: tools.searchGeofenceRequestBody outputParameters: - type: object mapping: $. - name: microsoft-azure-get-spatial-greatcircledistance description: Microsoft Azure Get Spatial Greatcircledistance Format hints: readOnly: true destructive: false idempotent: true call: azure-maps-spatial-service-spatial.microsoftazurespatialgetgreatcircledistance with: query: tools.query outputParameters: - type: object mapping: $. - name: microsoft-azure-post-spatial-pointinpolygon description: Microsoft Azure Post Spatial Pointinpolygon Format hints: readOnly: false destructive: false idempotent: false call: azure-maps-spatial-service-spatial.microsoftazurespatialpostpointinpolygon with: lat: tools.lat lon: tools.lon pointInPolygonRequestBody: tools.pointInPolygonRequestBody outputParameters: - type: object mapping: $. - name: microsoft-azure-get-spatial-pointinpolygon description: Microsoft Azure Get Spatial Pointinpolygon Format hints: readOnly: true destructive: false idempotent: true call: azure-maps-spatial-service-spatial.microsoftazurespatialgetpointinpolygon with: lat: tools.lat lon: tools.lon outputParameters: - type: object mapping: $.