# Multi-Location Route Optimizer W Map

## Links

- Product page URL: https://www.agentpmt.com/marketplace/multi-location-route-optimizer-w-map
- Product markdown URL: https://www.agentpmt.com/marketplace/multi-location-route-optimizer-w-map?format=agent-md
- Product JSON URL: https://www.agentpmt.com/marketplace/multi-location-route-optimizer-w-map?format=agent-json

## Overview

- Product ID: 696007395038e8cdcd4d4245
- Vendor: Apoth3osis
- Type: core utility
- Unit type: request
- Price: 2500 credits
- Categories: Task Planning & Orchestration, Automation, Mapping & Visualization, Geocoding & Location Services, Places & Business Search, Routing & Navigation, Spatial Analysis, Meeting & Calendar Scheduling, Task & Workflow Automation, Time Tracking & Resource Planning, Appointment & Scheduling, Property Listings & Search, Travel Planning & Itineraries, Shipping & Delivery, Inventory & Warehouse Management, Ride-Hailing & Mobility, Parking & EV Charging
- Generated at: 2026-05-30T20:19:55.500Z

### Page Description

Find the most efficient route for visiting multiple locations with this comprehensive route optimization tool. Perfect for delivery services, sales teams, service technicians, and any business that needs to minimize travel time or distance when visiting multiple locations. The tool automatically reorders 2-25 waypoints to find the most efficient path, accepting both street addresses and latitude/longitude coordinates for maximum flexibility. It generates static maps showing the optimized route and creates shareable Google Maps URLs for easy navigation. The optimizer supports round trips for delivery scenarios, accounts for service time at each location, and offers multiple travel modes including driving, walking, bicycling, and transit. You can avoid tolls, highways, or ferries based on your preferences, and choose to optimize for either time or distance. The tool provides four main actions: optimize_route to find the most efficient order to visit all locations, get_route_details for turn-by-turn directions, create_route_map to generate visual maps, and get_instructions for usage documentation. Typical users see 10-30% reduction in travel distance and time, making this an essential tool for improving operational efficiency.

### Agent Description

Optimize routes for 2-25 waypoints. Minimize travel time/distance. Generate maps and Google Maps URLs. Supports round trips and multiple travel modes.

## Details

### Details

Find the most efficient route for visiting multiple locations with this comprehensive route optimization tool. Perfect for delivery services, sales teams, service technicians, and any business that needs to minimize travel time or distance when visiting multiple locations. The tool automatically reorders 2-25 waypoints to find the most efficient path, accepting both street addresses and latitude/longitude coordinates for maximum flexibility. It generates static maps showing the optimized route and creates shareable Google Maps URLs for easy navigation. The optimizer supports round trips for delivery scenarios, accounts for service time at each location, and offers multiple travel modes including driving, walking, bicycling, and transit. You can avoid tolls, highways, or ferries based on your preferences, and choose to optimize for either time or distance. The tool provides four main actions: optimize_route to find the most efficient order to visit all locations, get_route_details for turn-by-turn directions, create_route_map to generate visual maps, and get_instructions for usage documentation. Typical users see 10-30% reduction in travel distance and time, making this an essential tool for improving operational efficiency.

### Actions

- `optimize_route` (25 credits): Find the most efficient order to visit 2-25 locations, minimizing total travel time or distance. Returns optimized route with distance/duration totals, a Google Maps navigation URL, and optimization stats.
- `get_route_details` (25 credits): Get turn-by-turn directions for locations in the provided order (does not reorder them).
- `create_route_map` (25 credits): Generate a static map image showing the route with labeled markers at each location.

### Use Cases

Delivery services can optimize daily delivery routes to save fuel and time while handling up to 25 deliveries per route with automatic distance and time calculations. Sales teams can plan efficient customer visit schedules and prioritize high-value clients while minimizing travel between appointments. Service technicians can reduce travel time between service calls and include service duration at each stop for accurate scheduling. Real estate agents can organize property showings efficiently and create optimal routes for touring multiple properties with clients. Food trucks and mobile businesses can plan optimal stop locations throughout the day to maximize coverage while minimizing fuel costs. Tour operators can create efficient sightseeing routes that balance tourist attractions with practical travel considerations.

### Workflows Using This Tool

#### Appointment Scheduling and Route Planner

Takes a CSV or spreadsheet file with addresses, asks for a starting drive time, time per stop, and starting address, then parses the addresses, optimizes the driving route, calculates estimated arrival and departure times for each location, and generates a CSV with the full schedule. Returns the optimized route map, Google Maps directions link, and the schedule CSV both locally and via notification. Ideal for field sales, service technicians, delivery planning, or any multi-stop appointment scheduling.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/appointment-scheduling-and-route-planner
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/appointment-scheduling-and-route-planner?format=agent-md
- Published: 2026-04-19T18:29:42.593Z

#### Route Planner From Address Photos

Automates multi-stop route planning from photos of addresses. Collects the user's starting address, time needed at each stop, and departure time. Processes uploaded images through OCR to extract addresses, compiles them into a CSV, optimizes the route order, calculates arrival and departure times for each location, and delivers the final plan with a map image, detailed schedule, and Google Maps link.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/address-image-route-planner
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/address-image-route-planner?format=agent-md
- Published: 2026-04-19T18:29:42.593Z

#### Estate and Garage Sale Fetcher and Route Planner

Searches online for estate sales and garage sales happening today within 30 miles of the user's location, selects the 5 best sales based on listed items and value, plans the optimal driving route from the user's home through all 5 sales and back, generates a visual map with labeled markers and route path, and sends the route details and map link to the user. Ideal for weekend bargain hunters who want to maximize their time hitting the best sales in the area.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/estate-and-garage-sale-route-planner
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/estate-and-garage-sale-route-planner?format=agent-md
- Published: 2026-02-12T02:21:34.708Z

### Related Content

No related content is currently linked to this product.

## Integration Details

### DynamicMCP

- Setup page URL: https://www.agentpmt.com/dynamic-mcp
- Claude setup guide: https://www.agentpmt.com/dynamic-mcp?platform=claude#videos
- ChatGPT setup guide: https://www.agentpmt.com/dynamic-mcp?platform=chatgpt#videos
- Cursor setup guide: https://www.agentpmt.com/dynamic-mcp?platform=cursor#videos
- Windsurf setup guide: https://www.agentpmt.com/dynamic-mcp?platform=windsurf#videos

Use the local router for command-based MCP clients. It forwards requests to `https://api.agentpmt.com/mcp` and does not execute tools locally.

```bash
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

### REST API

The live page renders cURL, Python, JavaScript, and Node.js examples. Logged-in users see those examples prefilled with their own API and budget credentials.

- Purchase endpoint: https://api.agentpmt.com/products/purchase
- Authorization format: `Bearer <base64(apiKey:budgetKey)>`

```bash
curl -X POST "https://api.agentpmt.com/products/purchase" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eW91ci1hcGkta2V5LWhlcmU6eW91ci1idWRnZXQta2V5LWhlcmU=" \
  -d '{
    "product_id": "696007395038e8cdcd4d4245",
    "parameters": {
      "action": "optimize_route",
      "locations": [],
      "return_to_start": false,
      "travel_mode": "driving",
      "optimize_for": "time",
      "include_directions": false,
      "include_map": false,
      "map_width": 640,
      "map_height": 640
    }
  }'
```

### Autonomous Agents

Autonomous agents can access this tool through AgentAddress credit balances or direct x402 payments. Use the Autonomous Agent API reference for endpoint shapes after choosing the access pattern below.

- Autonomous Agent API reference URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents
- Autonomous Agent API reference markdown URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents?format=agent-md
- Credit-Based Access Using AgentAddress: https://www.agentpmt.com/docs/autonomous-agents/credit-based-tool-usage-with-agentaddress
- AgentAddress is preferred for persistent file access, stored platform state, and maximum tool use ability across repeated calls.
- Direct x402 is for independent one-off tool calls that do not require shared files or stored platform state.
- Direct x402 public payments: USDC on Base, Arbitrum, Optimism, Polygon, and Avalanche.

### Schema

#### Parameters

- Schema type: actions

```json
{
  "actions": {
    "optimize_route": {
      "description": "Find the most efficient order to visit 2-25 locations, minimizing total travel time or distance. Returns optimized route with distance/duration totals, a Google Maps navigation URL, and optimization stats.",
      "properties": {
        "locations": {
          "type": "array",
          "description": "List of 2-25 locations to visit. Each location must have either an address OR latitude/longitude coordinates.",
          "required": true,
          "minItems": 2,
          "maxItems": 25,
          "items": {
            "type": "object",
            "properties": {
              "address": {
                "type": "string",
                "description": "Street address or place name (e.g., '123 Main St, New York, NY' or 'Times Square')",
                "required": false
              },
              "latitude": {
                "type": "number",
                "description": "Latitude coordinate (-90 to 90)",
                "minimum": -90,
                "maximum": 90,
                "required": false
              },
              "longitude": {
                "type": "number",
                "description": "Longitude coordinate (-180 to 180)",
                "minimum": -180,
                "maximum": 180,
                "required": false
              },
              "name": {
                "type": "string",
                "description": "Optional name/label for this location (e.g., 'Customer A', 'Warehouse')",
                "required": false
              },
              "service_time_minutes": {
                "type": "integer",
                "description": "Time spent at this location in minutes",
                "minimum": 0,
                "required": false
              }
            }
          }
        },
        "start_location": {
          "type": "object",
          "description": "Fixed starting point if different from first location in list",
          "required": false,
          "properties": {
            "address": {
              "type": "string",
              "description": "Street address or place name",
              "required": false
            },
            "latitude": {
              "type": "number",
              "description": "Latitude coordinate (-90 to 90)",
              "minimum": -90,
              "maximum": 90,
              "required": false
            },
            "longitude": {
              "type": "number",
              "description": "Longitude coordinate (-180 to 180)",
              "minimum": -180,
              "maximum": 180,
              "required": false
            },
            "name": {
              "type": "string",
              "description": "Optional name for start location",
              "required": false
            }
          }
        },
        "end_location": {
          "type": "object",
          "description": "Fixed ending point if different from last location in list. Ignored when return_to_start is true.",
          "required": false,
          "properties": {
            "address": {
              "type": "string",
              "description": "Street address or place name",
              "required": false
            },
            "latitude": {
              "type": "number",
              "description": "Latitude coordinate (-90 to 90)",
              "minimum": -90,
              "maximum": 90,
              "required": false
            },
            "longitude": {
              "type": "number",
              "description": "Longitude coordinate (-180 to 180)",
              "minimum": -180,
              "maximum": 180,
              "required": false
            },
            "name": {
              "type": "string",
              "description": "Optional name for end location",
              "required": false
            }
          }
        },
        "return_to_start": {
          "type": "boolean",
          "description": "Whether to return to starting location (round trip)",
          "default": false,
          "required": false
        },
        "travel_mode": {
          "type": "string",
          "description": "Mode of transportation",
          "default": "driving",
          "enum": [
            "driving",
            "walking",
            "bicycling",
            "transit"
          ],
          "required": false
        },
        "avoid": {
          "type": "array",
          "description": "Features to avoid on the route",
          "required": false,
          "items": {
            "type": "string",
            "enum": [
              "tolls",
              "highways",
              "ferries"
            ]
          }
        },
        "optimize_for": {
          "type": "string",
          "description": "Optimization priority",
          "default": "time",
          "enum": [
            "time",
            "distance"
          ],
          "required": false
        },
        "departure_time": {
          "type": "string",
          "description": "Departure time in ISO format (e.g., '2026-01-15T09:00:00') or 'now' for current time. Traffic-aware routing (driving mode only).",
          "required": false
        },
        "include_directions": {
          "type": "boolean",
          "description": "Include detailed turn-by-turn directions in response",
          "default": false,
          "required": false
        },
        "include_map": {
          "type": "boolean",
          "description": "Generate and include a visual map of the route",
          "default": false,
          "required": false
        },
        "map_width": {
          "type": "integer",
          "description": "Map image width in pixels (1-640)",
          "default": 640,
          "minimum": 1,
          "maximum": 640,
          "required": false
        },
        "map_height": {
          "type": "integer",
          "description": "Map image height in pixels (1-640)",
          "default": 640,
          "minimum": 1,
          "maximum": 640,
          "required": false
        }
      }
    },
    "get_route_details": {
      "description": "Get turn-by-turn directions for locations in the provided order (does not reorder them).",
      "properties": {
        "locations": {
          "type": "array",
          "description": "List of 2-25 locations in the desired visit order. Each location must have either an address OR latitude/longitude coordinates.",
          "required": true,
          "minItems": 2,
          "maxItems": 25,
          "items": {
            "type": "object",
            "properties": {
              "address": {
                "type": "string",
                "description": "Street address or place name",
                "required": false
              },
              "latitude": {
                "type": "number",
                "description": "Latitude coordinate (-90 to 90)",
                "minimum": -90,
                "maximum": 90,
                "required": false
              },
              "longitude": {
                "type": "number",
                "description": "Longitude coordinate (-180 to 180)",
                "minimum": -180,
                "maximum": 180,
                "required": false
              },
              "name": {
                "type": "string",
                "description": "Optional name/label for this location",
                "required": false
              },
              "service_time_minutes": {
                "type": "integer",
                "description": "Time spent at this location in minutes",
                "minimum": 0,
                "required": false
              }
            }
          }
        },
        "travel_mode": {
          "type": "string",
          "description": "Mode of transportation",
          "default": "driving",
          "enum": [
            "driving",
            "walking",
            "bicycling",
            "transit"
          ],
          "required": false
        },
        "avoid": {
          "type": "array",
          "description": "Features to avoid on the route",
          "required": false,
          "items": {
            "type": "string",
            "enum": [
              "tolls",
              "highways",
              "ferries"
            ]
          }
        }
      }
    },
    "create_route_map": {
      "description": "Generate a static map image showing the route with labeled markers at each location.",
      "properties": {
        "locations": {
          "type": "array",
          "description": "List of 2-25 locations in the desired order. Each location must have either an address OR latitude/longitude coordinates.",
          "required": true,
          "minItems": 2,
          "maxItems": 25,
          "items": {
            "type": "object",
            "properties": {
              "address": {
                "type": "string",
                "description": "Street address or place name",
                "required": false
              },
              "latitude": {
                "type": "number",
                "description": "Latitude coordinate (-90 to 90)",
                "minimum": -90,
                "maximum": 90,
                "required": false
              },
              "longitude": {
                "type": "number",
                "description": "Longitude coordinate (-180 to 180)",
                "minimum": -180,
                "maximum": 180,
                "required": false
              },
              "name": {
                "type": "string",
                "description": "Optional name/label for this location",
                "required": false
              },
              "service_time_minutes": {
                "type": "integer",
                "description": "Time spent at this location in minutes",
                "minimum": 0,
                "required": false
              }
            }
          }
        },
        "travel_mode": {
          "type": "string",
          "description": "Mode of transportation (used for Google Maps URL)",
          "default": "driving",
          "enum": [
            "driving",
            "walking",
            "bicycling",
            "transit"
          ],
          "required": false
        },
        "map_width": {
          "type": "integer",
          "description": "Map image width in pixels (1-640)",
          "default": 640,
          "minimum": 1,
          "maximum": 640,
          "required": false
        },
        "map_height": {
          "type": "integer",
          "description": "Map image height in pixels (1-640)",
          "default": 640,
          "minimum": 1,
          "maximum": 640,
          "required": false
        }
      }
    }
  },
  "properties": {
    "action": {
      "type": "string",
      "description": "Action to perform: 'get_instructions' (get usage guide), 'optimize_route' (find most efficient order), 'get_route_details' (get turn-by-turn directions), 'create_route_map' (generate visual map)",
      "required": true,
      "enum": [
        "get_instructions",
        "optimize_route",
        "get_route_details",
        "create_route_map"
      ]
    },
    "locations": {
      "type": "array",
      "description": "List of 2-25 locations to visit. Each location must have either an address OR latitude/longitude coordinates.",
      "minItems": 2,
      "maxItems": 25,
      "items": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Street address or place name (e.g., '123 Main St, New York, NY' or 'Times Square')"
          },
          "latitude": {
            "type": "number",
            "description": "Latitude coordinate (-90 to 90)",
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": "number",
            "description": "Longitude coordinate (-180 to 180)",
            "minimum": -180,
            "maximum": 180
          },
          "name": {
            "type": "string",
            "description": "Optional name/label for this location (e.g., 'Customer A', 'Warehouse')"
          },
          "service_time_minutes": {
            "type": "integer",
            "description": "Optional time spent at this location in minutes",
            "minimum": 0
          }
        }
      },
      "required": false
    },
    "start_location": {
      "type": "object",
      "description": "Optional fixed starting point (if different from first location in list)",
      "properties": {
        "address": {
          "type": "string",
          "description": "Street address or place name",
          "required": false
        },
        "latitude": {
          "type": "number",
          "description": "Latitude coordinate",
          "minimum": -90,
          "maximum": 90,
          "required": false
        },
        "longitude": {
          "type": "number",
          "description": "Longitude coordinate",
          "minimum": -180,
          "maximum": 180,
          "required": false
        },
        "name": {
          "type": "string",
          "description": "Optional name for start location",
          "required": false
        }
      },
      "required": false
    },
    "end_location": {
      "type": "object",
      "description": "Optional fixed ending point (if different from last location in list)",
      "properties": {
        "address": {
          "type": "string",
          "description": "Street address or place name",
          "required": false
        },
        "latitude": {
          "type": "number",
          "description": "Latitude coordinate",
          "minimum": -90,
          "maximum": 90,
          "required": false
        },
        "longitude": {
          "type": "number",
          "description": "Longitude coordinate",
          "minimum": -180,
          "maximum": 180,
          "required": false
        },
        "name": {
          "type": "string",
          "description": "Optional name for end location",
          "required": false
        }
      },
      "required": false
    },
    "return_to_start": {
      "type": "boolean",
      "description": "Whether to return to starting location (round trip)",
      "default": false,
      "required": false
    },
    "travel_mode": {
      "type": "string",
      "description": "Mode of transportation",
      "default": "driving",
      "enum": [
        "driving",
        "walking",
        "bicycling",
        "transit"
      ],
      "required": false
    },
    "avoid": {
      "type": "array",
      "description": "Features to avoid on the route",
      "items": {
        "type": "string",
        "enum": [
          "tolls",
          "highways",
          "ferries"
        ]
      },
      "required": false
    },
    "optimize_for": {
      "type": "string",
      "description": "Optimization priority",
      "default": "time",
      "enum": [
        "time",
        "distance"
      ],
      "required": false
    },
    "departure_time": {
      "type": "string",
      "description": "Departure time in ISO format (e.g., '2024-01-15T09:00:00') or 'now' for current time",
      "required": false
    },
    "include_directions": {
      "type": "boolean",
      "description": "Include detailed turn-by-turn directions in response",
      "default": false,
      "required": false
    },
    "include_map": {
      "type": "boolean",
      "description": "Generate and include a visual map of the route",
      "default": false,
      "required": false
    },
    "map_width": {
      "type": "integer",
      "description": "Map image width in pixels (1-640)",
      "default": 640,
      "minimum": 1,
      "maximum": 640,
      "required": false
    },
    "map_height": {
      "type": "integer",
      "description": "Map image height in pixels (1-640)",
      "default": 640,
      "minimum": 1,
      "maximum": 640,
      "required": false
    }
  }
}
```

### Usage Instructions

# Multi-Location Route Optimizer W Map

Optimizes multi-stop routes to find the most efficient visit order, provides turn-by-turn directions, and generates visual route maps. Supports 2-25 locations with driving, walking, bicycling, and transit modes.

## Actions

### optimize_route

Finds the most efficient order to visit a set of locations, minimizing total travel time or distance.

**Required fields:**
- `locations` (array): 2-25 location objects. Each must have either `address` (string) OR `latitude`/`longitude` (numbers).

**Optional location fields:**
- `name` (string): Label for the location (e.g., "Warehouse", "Customer A")
- `service_time_minutes` (integer): Time spent at this stop in minutes

**Optional fields:**
- `start_location` (object): Fixed starting point if different from first location. Object with `address` or `latitude`/`longitude`, and optional `name`.
- `end_location` (object): Fixed ending point if different from last location. Object with `address` or `latitude`/`longitude`, and optional `name`. Ignored when `return_to_start` is true.
- `return_to_start` (boolean): Set to `true` for a round trip back to starting location. Default: `false`
- `travel_mode` (string): `"driving"` (default), `"walking"`, `"bicycling"`, or `"transit"`
- `optimize_for` (string): `"time"` (default) or `"distance"`
- `avoid` (array): Features to avoid: `"tolls"`, `"highways"`, `"ferries"`
- `departure_time` (string): ISO format datetime (e.g., `"2026-01-15T09:00:00"`) or `"now"`. Traffic-aware routing (driving mode only).
- `include_map` (boolean): Generate a visual route map image. Default: `false`
- `include_directions` (boolean): Include turn-by-turn directions. Default: `false`
- `map_width` (integer): Map image width in pixels, 1-640. Default: 640
- `map_height` (integer): Map image height in pixels, 1-640. Default: 640

**Response includes:**
- `optimized_route.locations` - Locations in optimized order with `travel_to_next_km` and `travel_to_next_minutes` per stop
- `optimized_route.legs` - Per-leg breakdown with `from`, `to`, `distance_km`, `duration_minutes`
- `optimized_route.total_distance_km` - Total route distance
- `optimized_route.total_duration_minutes` - Total travel time plus service time
- `optimized_route.estimated_fuel_cost_usd` - Rough fuel cost estimate
- `google_maps_url` - Clickable Google Maps navigation link
- `optimization_stats` - Distance/time saved compared to original order
- `map_image.signed_url` - Route map image URL (when `include_map: true`). Always present this URL to the user.
- `directions` - Turn-by-turn directions (when `include_directions: true`)

**Example - Basic optimization:**
```json
{
  "action": "optimize_route",
  "locations": [
    { "address": "San Francisco, CA" },
    { "address": "San Jose, CA" },
    { "address": "Oakland, CA" }
  ]
}
```

**Example - Full-featured delivery route:**
```json
{
  "action": "optimize_route",
  "locations": [
    { "address": "123 Main St, San Francisco, CA", "name": "Warehouse", "service_time_minutes": 15 },
    { "address": "456 Oak Ave, San Jose, CA", "name": "Customer A", "service_time_minutes": 30 },
    { "address": "789 Pine St, Oakland, CA", "name": "Customer B", "service_time_minutes": 20 }
  ],
  "start_location": { "address": "100 HQ Blvd, San Francisco, CA", "name": "HQ" },
  "return_to_start": true,
  "travel_mode": "driving",
  "optimize_for": "time",
  "avoid": ["tolls"],
  "include_map": true,
  "include_directions": true
}
```

**Example - Using coordinates:**
```json
{
  "action": "optimize_route",
  "locations": [
    { "latitude": 37.7749, "longitude": -122.4194, "name": "San Francisco" },
    { "latitude": 37.3382, "longitude": -121.8863, "name": "San Jose" },
    { "latitude": 37.8044, "longitude": -122.2712, "name": "Oakland" }
  ]
}
```

---

### get_route_details

Gets turn-by-turn directions for locations in the order provided (does not reorder them).

**Required fields:**
- `locations` (array): 2-25 location objects in the desired visit order

**Optional fields:**
- `travel_mode` (string): `"driving"` (default), `"walking"`, `"bicycling"`, or `"transit"`
- `avoid` (array): Features to avoid: `"tolls"`, `"highways"`, `"ferries"`

**Response includes:**
- `directions.legs[]` - Per-leg directions with steps, distance, and duration
- `directions.total_distance` - Total distance in km
- `directions.total_duration` - Total duration in minutes
- `google_maps_url` - Clickable Google Maps link

**Example:**
```json
{
  "action": "get_route_details",
  "locations": [
    { "address": "Times Square, New York, NY", "name": "Start" },
    { "address": "Central Park, New York, NY", "name": "Stop 1" },
    { "address": "Brooklyn Bridge, New York, NY", "name": "End" }
  ],
  "travel_mode": "walking"
}
```

---

### create_route_map

Generates a static map image showing the route with labeled markers at each location.

**Required fields:**
- `locations` (array): 2-25 location objects in the desired order

**Optional fields:**
- `travel_mode` (string): `"driving"` (default), `"walking"`, `"bicycling"`, or `"transit"`
- `map_width` (integer): Image width in pixels, 1-640. Default: 640
- `map_height` (integer): Image height in pixels, 1-640. Default: 640

**Response includes:**
- `map_image.signed_url` - URL to the generated map image. Always present this URL to the user.
- `map_image.file_id` - Storage file ID
- `google_maps_url` - Clickable Google Maps link

**Example:**
```json
{
  "action": "create_route_map",
  "locations": [
    { "address": "Los Angeles, CA", "name": "LA" },
    { "address": "Las Vegas, NV", "name": "Vegas" },
    { "address": "Phoenix, AZ", "name": "Phoenix" }
  ],
  "map_width": 640,
  "map_height": 400
}
```

## Important Notes

- Each location must have either an `address` OR both `latitude` and `longitude`.
- You can mix address-based and coordinate-based locations in the same request.
- The `locations` array must contain between 2 and 25 locations.
- When `return_to_start` is `true`, the route ends back at the starting point; `end_location` is ignored.
- Map images expire after 7 days. Always display the `signed_url` to the user when a map is generated.
- The `google_maps_url` in every response opens the route in Google Maps for interactive navigation.
- Optimization uses a nearest-neighbor algorithm; results are very good for typical route sizes but may not be globally optimal for very large sets.
- Set `departure_time` to `"now"` or an ISO datetime to factor in traffic conditions (driving mode only).

### Frequently Asked Questions

#### How do I connect this tool to an external agent?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

You can install the local MCP server by opening a terminal and running:

```
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

This will connect you to local agents like Claude Code, Windsurf, Grok Build, Cursor, etc.

Alternatively you can connect to the hosted version with this config block, no installation required:

```
{
  "mcpServers": {
    "agentpmt": {
      "type": "streamable-http",
      "url": "https://api.agentpmt.com/mcp",
      "headers": {
        "Authorization": "Bearer <AGENTPMT_BEARER_TOKEN>",
        "x-instance-metadata": "{\"client\":\"generic-mcp\",\"platform\":\"remote\"}"
      }
    }
  }
}
```

[View MCP Connection Instructions](/docs/mcp-reference/connection) for more details.

#### How does an external agent use this tool?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

After the external agent is connected to an Agent Group that can use this tool, paste this prompt into the agent:

> Call the AgentPMT-Tool-Search-and-Execution tool with action 'get\_schema' and tool\_id 696007395038e8cdcd4d4245 ("Multi-Location Route Optimizer W Map"). Then call the same tool with action 'call\_tool', tool\_id 696007395038e8cdcd4d4245, and the parameters needed for my request.

The agent should fetch the tool schema first, collect the required parameters for your request, and then call the tool through AgentPMT.

### Dependencies

These products are automatically added when this product is enabled on the page UI.

#### File Management

Upload, list, retrieve, share, download, delete, and manage files stored in AgentPMT cloud storage. This product now owns the full file lifecycle, including signed upload URLs for files up to 10MB and for files over 10MB up to 100MB, budget-scoped file listing with preview URLs, fresh signed download URLs, direct base64 download for smaller files, password-protected sharing, metadata and tag updates, access-history inspection, and expiration extension. All file operations are scoped to the current budget for isolation and are designed to let one budget create persistent files that can be revisited across later agent runs.

- Page URL: https://www.agentpmt.com/marketplace/file-management
- Markdown URL: https://www.agentpmt.com/marketplace/file-management?format=agent-md