EN
API & MCPDocumentation

Mariner GPS Tools Agent & API Platform

Calculate great-circle distance

Calculate great-circle and rhumb-line distances between two positions.

Interfaces

POST
REST endpoint/api/v1/distance
MCP
Tool namecalculate_distance

Request

Send the request as JSON. MCP clients pass the same fields as tool arguments.

cURLshell
curl -X POST https://marinergps.tools/api/v1/distance \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "from": {
    "lat": 50.1,
    "lng": -4.2
  },
  "to": {
    "lat": 49.8,
    "lng": -3.1
  }
}'
Request bodyjson
{
  "from": {
    "lat": 50.1,
    "lng": -4.2
  },
  "to": {
    "lat": 49.8,
    "lng": -3.1
  }
}

Response

REST wraps the calculation result in the standard success envelope. MCP returns the same calculation data as structured tool output.

JSON
{
  "ok": true,
  "data": {
    "km": 85.48058951328396,
    "nm": 46.15584267182427,
    "mi": 53.11515938645877,
    "m": 85480.58951328397,
    "ft": 280448.0415605023,
    "greatCircleBearing": {
      "degrees": 112.54786806700503,
      "compass": "ESE"
    },
    "rhumbLine": {
      "km": 85.4813587821647,
      "nm": 46.15625804394131,
      "mi": 53.115637387832464,
      "m": 85481.35878216471,
      "ft": 280450.56540775544,
      "bearing": {
        "degrees": 112.96963655680418,
        "compass": "ESE"
      }
    }
  }
}

Schemas

The definitions below show the complete JSON Schema used to validate inputs and describe outputs.

Input schema

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "from": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "lat": {
          "type": "string",
          "description": "Latitude as signed decimal degrees (-33.8688), decimal degrees with a hemisphere letter (33.8688° S), degrees and decimal minutes (33° 52.13′ S) or DMS (51° 30′ 26.4″ N). S is negative. Do not combine a sign with a hemisphere letter."
        },
        "lng": {
          "type": "string",
          "description": "Longitude as signed decimal degrees (-4.15), decimal degrees with a hemisphere letter (4.15° W), degrees and decimal minutes (4° 09.0′ W) or DMS (0° 07′ 39″ W). W is negative. Do not combine a sign with a hemisphere letter."
        }
      },
      "required": [
        "lat",
        "lng"
      ]
    },
    "to": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "lat": {
          "type": "string",
          "description": "Latitude as signed decimal degrees (-33.8688), decimal degrees with a hemisphere letter (33.8688° S), degrees and decimal minutes (33° 52.13′ S) or DMS (51° 30′ 26.4″ N). S is negative. Do not combine a sign with a hemisphere letter."
        },
        "lng": {
          "type": "string",
          "description": "Longitude as signed decimal degrees (-4.15), decimal degrees with a hemisphere letter (4.15° W), degrees and decimal minutes (4° 09.0′ W) or DMS (0° 07′ 39″ W). W is negative. Do not combine a sign with a hemisphere letter."
        }
      },
      "required": [
        "lat",
        "lng"
      ]
    }
  },
  "required": [
    "from",
    "to"
  ]
}

Output schema

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "nm": {
      "type": "number"
    },
    "mi": {
      "type": "number"
    },
    "km": {
      "type": "number"
    },
    "m": {
      "type": "number"
    },
    "ft": {
      "type": "number"
    },
    "greatCircleBearing": {
      "type": "object",
      "properties": {
        "degrees": {
          "type": "number"
        },
        "compass": {
          "type": "string"
        }
      },
      "required": [
        "degrees",
        "compass"
      ]
    },
    "rhumbLine": {
      "type": "object",
      "properties": {
        "nm": {
          "type": "number"
        },
        "mi": {
          "type": "number"
        },
        "km": {
          "type": "number"
        },
        "m": {
          "type": "number"
        },
        "ft": {
          "type": "number"
        },
        "bearing": {
          "type": "object",
          "properties": {
            "degrees": {
              "type": "number"
            },
            "compass": {
              "type": "string"
            }
          },
          "required": [
            "degrees",
            "compass"
          ]
        }
      },
      "required": [
        "nm",
        "mi",
        "km",
        "m",
        "ft",
        "bearing"
      ]
    }
  },
  "required": [
    "nm",
    "mi",
    "km",
    "m",
    "ft",
    "greatCircleBearing",
    "rhumbLine"
  ]
}

MCP Benchmark Results

Measured for this tool with and without the Mariner GPS Tools MCP server attached.

91%fewer generated model tokensMedian for this tool across 8 of 9 models with enough correct baseline results for comparison.
4.3×faster in benchmarksMedian for this tool across 8 of 9 models with enough correct baseline results for comparison.
100%correct with MCP, against 87.0% without108/108 MCP observations for this tool within tolerance.

Measured September 2026 · 9 models · 4 navigation cases · 3 repetitions · 216 observations · Production MCP

API & MCP documentation