{
  "serviceId": "routing-isochrones",
  "displayName": "Routing Isochrones",
  "description": "Straight-line geometry, not road routing: a walking-radius circle (speed x time) around a point or geocoded place and, with a destination, the straight-line distance, estimated minutes and whether it is within reach. POST /v1/routing with {from or place, minutes, to}. Places are geocoded with OpenStreetMap Nominatim. Pay per request in USDC; no account, no API key.",
  "category": "research",
  "resourceUrl": "https://test.agent.pocket.network/v1/routing-isochrones",
  "priceUsd": "0.005000",
  "priceVersion": 1,
  "rails": [
    {
      "id": "base",
      "network": "eip155:84532",
      "chainId": 84532,
      "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
      "tokenDecimals": 6,
      "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
    }
  ],
  "paymentNetworks": [
    "eip155:84532"
  ],
  "paymentProtocols": [
    "x402"
  ],
  "protocols": [
    "rest"
  ],
  "inputSchema": {
    "type": "object",
    "description": "The request body for POST /v1/routing.",
    "properties": {
      "place": {
        "type": "string",
        "description": "Place name to geocode (alternative to from)."
      },
      "from": {
        "description": "Start point as [lat, lon], {lat, lon} or \"lat,lon\"."
      },
      "to": {
        "description": "Optional destination, same formats as from."
      },
      "minutes": {
        "type": "number",
        "description": "Travel time in minutes, default 15."
      },
      "speed_kmh": {
        "type": "number",
        "description": "Speed in km/h, default 4.5 (walking)."
      }
    }
  },
  "outputSchema": {
    "type": "object",
    "description": "For POST /v1/routing, a JSON object with origin, minutes, speed_kmh, radius_m, a 24-point polygon, method and, with a destination, to, straight_line_m, within_reach and estimated_minutes. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field."
  },
  "methods": {
    "GET /v1/health": "read",
    "GET /v1/version": "read",
    "POST /v1/routing": "read"
  },
  "example": {
    "method": "POST",
    "path": "/v1/routing",
    "request": {
      "from": {
        "lat": 40.7,
        "lon": -74
      },
      "minutes": 15
    },
    "response": {
      "portal": {
        "provenance": "third-party-supplier",
        "serviceId": "routing-isochrones",
        "schemaCheck": "unchecked"
      },
      "data": {
        "place": null,
        "origin": [
          40.7,
          -74
        ],
        "minutes": 15,
        "speed_kmh": 4.5,
        "radius_m": 1125,
        "polygon": [
          [
            40.710106,
            -74
          ],
          [
            40.709762,
            -73.99655
          ],
          [
            40.708752,
            -73.993335
          ]
        ],
        "method": "straight-line circle (not road routing)",
        "source": "coordinates",
        "cached": false,
        "service": "routing-isochrones"
      }
    },
    "capturedAt": "2026-09-25T15:53:27Z"
  },
  "firstParty": true,
  "networks": [
    "eip155:84532"
  ],
  "serving": true,
  "page": "https://test.agent.pocket.network/services/routing-isochrones",
  "descriptor": "https://test.agent.pocket.network/services/routing-isochrones/descriptor.json"
}