# Lalamove MCP by usefulapi (remote · lalamove.usefulapi.io)

Read Lalamove cities, vehicles, quotations and orders; quote, place, tip and cancel deliveries.

- Trust score: 62/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-25

## Components

- remote · `lalamove.usefulapi.io`: 62/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-lalamove/lalamove.md), [page](https://verifymcp.io/servers/io-usefulapi-lalamove/lalamove)

## Channel facts

- Endpoint: `https://lalamove.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-25.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 79/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1953 tokens (~195/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Lalamove MCP by usefulapi server?

Lalamove MCP by usefulapi is a hosted endpoint at https://lalamove.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-lalamove 'https://lalamove.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-lalamove": {
      "url": "https://lalamove.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-lalamove": {
      "type": "http",
      "url": "https://lalamove.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-lalamove]
url = "https://lalamove.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-lalamove": {
      "type": "remote",
      "url": "https://lalamove.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-lalamove --url 'https://lalamove.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-lalamove:
    url: "https://lalamove.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-lalamove": {
      "Transport": "http",
      "Url": "https://lalamove.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-lalamove -t streamable-http -u 'https://lalamove.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-lalamove": {
      "type": "http",
      "url": "https://lalamove.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-25 (score 62, 0)

- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.0.0 → 1.0.3

### 2026-10-24 (score 62)

First indexed and scored.

## MCP tools (10)

### `lalamove_list_cities` (~66 tokens)

List cities, vehicles and special requests

The cities of the connected market with the vehicle types (serviceType keys such as MOTORCYCLE or CAR), their size and load, and the special requests each vehicle accepts. Use these exact keys in lalamove_create_quotation. GET /v3/cities.

### `lalamove_get_quotation` (~79 tokens)

Get quotation

A quotation by id: stops (with stopId), vehicle, price breakdown, currency, distance and expiresAt (a quotation can be ordered for 5 minutes). GET /v3/quotations/{quotationId}.

Input parameters:

- `quotation_id` (string, required): Lalamove quotation id (quotationId from lalamove_create_quotation).

### `lalamove_get_order` (~119 tokens)

Get order

One delivery order: status (ASSIGNING_DRIVER, ON_GOING, PICKED_UP, COMPLETED, CANCELED, REJECTED, EXPIRED), price breakdown, driver id, share link, distance, stops with proof of delivery and metadata. Only orders from the last 60 days can be read. GET /v3/orders/{orderId}.

Input parameters:

- `order_id` (string, required): Lalamove order id (the orderId of an order, e.g. 107900701184 or a 19-digit id).

### `lalamove_get_driver` (~150 tokens)

Get driver and location

The driver of an order: name, phone, masked plate number, photo and last known coordinates (updated about every 10 seconds). Lalamove only shares this from 1 hour before the scheduled pickup (or the driver's arrival, whichever is earlier) until the order is completed; outside that window it answers 403. GET /v3/orders/{orderId}/drivers/{driverId}.

Input parameters:

- `driver_id` (string, required): Lalamove driver id (the driverId of the order once a driver accepted it).
- `order_id` (string, required): Lalamove order id (the orderId of an order, e.g. 107900701184 or a 19-digit id).

### `lalamove_track_order` (~131 tokens)

Track order

Where is my delivery: the order status, stop-level proof of delivery and share link, plus (when a driver has the order and it is on its way) the driver's name and live coordinates. Two reads: GET /v3/orders/{orderId} and, if a driver is assigned and the order is ON_GOING or PICKED_UP, GET /v3/orders/{orderId}/drivers/{driverId}.

Input parameters:

- `order_id` (string, required): Lalamove order id (the orderId of an order, e.g. 107900701184 or a 19-digit id).

### `lalamove_create_quotation` (~351 tokens)

Get a delivery quotation

Price a delivery: 2-16 stops (the first is the pickup, the rest are drop-offs), a vehicle type and optional extras. Returns quotationId, per-stop stopId, the price breakdown and currency, distance and expiresAt (about 5 minutes). It creates a quotation only: nothing is ordered and nothing is charged. Get the vehicle keys from lalamove_list_cities. Show the price to the user before placing an order. POST /v3/quotations.

Input parameters:

- `item` (object): Item information (only supported in Thailand, Vietnam and Hong Kong).
- `language` (string): Address language key, e.g. en_HK or zh_HK. Default: English for the market.
- `priority_tier` (boolean): Priority tier: faster matching, higher price. Default false (regular tier).
- `route_optimized` (boolean): Let Lalamove reorder the drop-offs for the cheapest route (needs 3+ stops).
- `schedule_at` (string): Pickup time in UTC (ISO 8601, ending in Z), up to 30 days ahead. Omit for an immediate delivery. Local 15:00 in Singapore (UTC+8) is 07:00Z.
- `service_type` (string, required): Vehicle key from lalamove_list_cities, e.g. MOTORCYCLE, CAR, VAN.
- `special_requests` (array): Special request keys valid for the vehicle (lalamove_list_cities), e.g. COD, DOOR_TO_DOOR.
- `stops` (array, required): The stops in order: stop 1 = pickup, the others = drop-offs (2-16 stops).

### `lalamove_place_order` (~296 tokens)

Place delivery order (charges the wallet)

WRITE, SPENDS MONEY: order a delivery from a quotation. In production the total price is charged to the prepaid Lalamove wallet and a driver is dispatched; cancellation is only free within Lalamove's policy. Only call it after the user has seen the quotation price and said yes. confirm_total must equal the quotation total (it is checked against Lalamove, and an expired quotation is refused). The recipients are given in stop order and matched to the quotation's drop-off stops by the tool. The order is placed once: do not retry after an error without checking lalamove_get_order. POST /v3/orders.

Input parameters:

- `confirm` (boolean, required): Must be true. Set it only after the user has explicitly confirmed this action.
- `confirm_total` (string, required): The total price the user approved, exactly as in the quotation priceBreakdown.total (e.g. "124").
- `metadata` (object): Your own reference key/value pairs stored on the order (e.g. your order number).
- `proof_of_delivery` (boolean): Ask the driver for a photo or signature at each stop.
- `quotation_id` (string, required): Lalamove quotation id (quotationId from lalamove_create_quotation).
- `recipients` (array, required): One contact per drop-off stop, in the same order as the quotation's stops after the pickup.
- `sender` (object, required): Contact at the pickup stop.

### `lalamove_add_priority_fee` (~167 tokens)

Add priority fee (tip, charges the wallet)

WRITE, SPENDS MONEY: add a priority fee (tip) to an order to attract a driver. Only possible before a driver accepts the order. The amount replaces the earlier fee and must be higher than it; the difference is charged to the wallet. Amount in the market's currency (see the order's priceBreakdown.currency). POST /v3/orders/{orderId}/priority-fee.

Input parameters:

- `amount` (string, required): The new total priority fee, e.g. "20".
- `confirm` (boolean, required): Must be true. Set it only after the user has explicitly confirmed this action.
- `order_id` (string, required): Lalamove order id (the orderId of an order, e.g. 107900701184 or a 19-digit id).

### `lalamove_cancel_order` (~143 tokens)

Cancel order

WRITE, DESTRUCTIVE: cancel a delivery order. Lalamove only allows it while the order is ASSIGNING_DRIVER, or less than 5 minutes after a driver accepted it; otherwise it answers ERR_CANCELLATION_FORBIDDEN. A cancelled order cannot be revived, only re-placed from a new quotation. DELETE /v3/orders/{orderId}.

Input parameters:

- `confirm` (boolean, required): Must be true. Set it only after the user has explicitly confirmed this action.
- `order_id` (string, required): Lalamove order id (the orderId of an order, e.g. 107900701184 or a 19-digit id).

### `lalamove_change_driver` (~179 tokens)

Change driver

WRITE: ask Lalamove to replace the driver of an order (no extra fee). Allowed 15 minutes after the driver was matched and before pickup; the order goes back to ASSIGNING_DRIVER and a new driver is looked for. Needs the current driver id from lalamove_get_order. DELETE /v3/orders/{orderId}/drivers/{driverId}.

Input parameters:

- `confirm` (boolean, required): Must be true. Set it only after the user has explicitly confirmed this action.
- `driver_id` (string, required): Lalamove driver id (the driverId of the order once a driver accepted it).
- `order_id` (string, required): Lalamove order id (the orderId of an order, e.g. 107900701184 or a 19-digit id).
- `reason` (string, required): Why the driver is changed.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-lalamove/lalamove#diagnostics

## Score history

- 2026-10-25: 62
- 2026-10-24: 62

## Common questions

### What is the Lalamove MCP by usefulapi server?

Lalamove MCP by usefulapi is listed in the public MCP registry as io.usefulapi/lalamove. Read Lalamove cities, vehicles, quotations and orders; quote, place, tip and cancel deliveries. This page covers its hosted endpoint (https://lalamove.usefulapi.io/mcp).

### Is the Lalamove MCP by usefulapi server safe to use?

Lalamove MCP by usefulapi scores 62 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Lalamove MCP by usefulapi server expose?

Lalamove MCP by usefulapi exposes 10 tools: lalamove_list_cities, lalamove_get_quotation, lalamove_get_order, lalamove_get_driver, lalamove_track_order, and 5 more. Their descriptions and schemas cost roughly 1,681 tokens of context every time the server is loaded.

### Does the Lalamove MCP by usefulapi server require authentication?

Yes. Lalamove MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Lalamove MCP by usefulapi server still maintained?

Lalamove MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://lalamove.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/lalamove/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-lalamove/lalamove.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-lalamove/lalamove.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-lalamove/lalamove
