# Moova MCP

> Moova MCP Server automates B2B logistics from any AI client. You can create shipments, get instant cost quotes, track real-time deliveries across Latin America and Argentina, generate shipping labels, and manage webhook notifications—all by talking to your agent.

## Overview
- **Category:** ecommerce
- **Price:** Free
- **Tags:** delivery-routing, shipment-tracking, logistics-api, carrier-integration, last-mile-delivery

## Description

Listen up. This server handles your entire B2B logistics flow through your agent. Forget jumping between ten different dashboards; you talk to your AI client, and it makes the moves for you.

To start, you can check if a shipment is even possible by running `list_coverage_zones`, which gives you an immediate list of all deliverable areas across Latin America and Argentina. Before committing, you gotta nail down the cost. Use `get_budget` to calculate pricing estimates from various carriers—you can compare options like express, standard, or next-day rates for any route.

When you're ready to ship, building the order is simple. You call `create_shipment`, and it handles assigning the best carrier route automatically based on your origin and destination addresses. If you gotta tweak something before pickup—like adjusting notes or changing an address—you run `update_shipment`. Keep in mind that once the carrier collects the package, those changes are gone.

You'll also need to check basic account info by calling `get_account_info` to confirm your merchant details. After you build the shipment, you get the full record using `get_shipment`, and then you download a printable shipping label containing all the necessary barcodes, QR codes, and carrier routing data via `get_shipment_label`.

Tracking is where this thing shines. You don't just get one status update; you run `track_shipment` to pull real-time GPS coordinates and the full event history—you see exactly when it leaves the depot and who handled the handoff. For a quick check, use `get_shipment_status` for the latest general update on any ID. Want to see everything that's moving right now? Run `list_shipments`, filtering by status like DELIVERED or IN_TRANSIT`.

Managing the flow is all about these tools. If a shipment goes sideways, you can use `cancel_shipment`. But remember, cancelling it means creating an entirely new order if you need to reship that package.

For keeping your internal systems current without constantly refreshing pages, you manage webhooks. You set up notifications by calling `create_webhook` to receive real-time alerts about future status changes, or you can remove old ones using `delete_webhook`. To see what endpoints are already running, just run `list_webhooks`. Finally, if you ever need the full details on a specific order that's in play, `get_shipment` provides the complete record.

## Tools

### cancel_shipment
Cancels an active shipment order; you must create a new one if the package needs to be reshipped.

### create_shipment
Builds and submits a new logistics shipment, automatically assigning the best carrier route based on provided addresses.

### create_webhook
Registers a webhook endpoint to receive real-time notifications about future shipment status changes.

### delete_webhook
Removes an existing, registered webhook endpoint.

### get_account_info
Retrieves basic information about the merchant account used with Moova.

### get_budget
Calculates and returns pricing estimates from various carriers (express, standard) for a defined route.

### get_shipment_label
Downloads a printable shipping label containing barcodes, QR codes, and all required carrier routing information.

### get_shipment_status
Retrieves the most recent general status update for any given shipment ID.

### get_shipment
Fetches the full details record for one specific shipment ID.

### list_coverage_zones
Checks and lists all currently available delivery zones across Argentina and Latin America.

### list_shipments
Lists multiple shipments, allowing you to filter the results by status (e.g., DELIVERED or IN_TRANSIT).

### list_webhooks
Displays a list of all webhook endpoints currently configured for this account.

### track_shipment
Gets the most detailed, real-time tracking events, including precise GPS locations and carrier handoffs.

### update_shipment
Modifies shipment details like addresses or notes before the carrier collects the package; changes aren't possible post-pickup.

## Prompt Examples

**Prompt:** 
```
Create a delivery from 'Av. Corrientes 1234, Buenos Aires' to 'Av. Santa Fe 5678, Buenos Aires' for Juan Pérez.
```

**Response:** 
```
Shipment created successfully! ID: MOV-28491-AR. Moova assigned carrier 'Flash Express' with an estimated delivery window of 3-5 hours. The printable label is ready — shall I retrieve it for you?
```

**Prompt:** 
```
How much would it cost to ship from Palermo to Belgrano in Buenos Aires?
```

**Response:** 
```
I've calculated the shipping estimates. Same-day delivery via Flash Express: $1,250 ARS. Next-day delivery via Correo Argentino: $780 ARS. Standard 2-day via Moova Economy: $520 ARS. Shall I create a shipment with any of these options?
```

**Prompt:** 
```
Track my shipment MOV-28491-AR and tell me where it is right now.
```

**Response:** 
```
Tracking shipment MOV-28491-AR... Current status: IN_TRANSIT. The package was picked up at 14:32 from Av. Corrientes 1234 and is currently en route with driver Martín G. (Flash Express). Last GPS ping: Av. Cabildo y Juramento at 15:10. Estimated delivery: 16:00-17:00 today.
```

## Capabilities

### Create new shipments
You can call `create_shipment` to establish a new delivery order using specific origin and destination addresses.

### Get cost estimates
Use `get_budget` to retrieve shipping rates from various carriers, including same-day, next-day, and standard options, for two given locations.

### Track delivery status
Run `track_shipment` to pull real-time GPS data and event history for any active shipment ID.

### Manage webhooks
Set up or delete webhooks using `create_webhook` and `delete_webhook` to keep your internal systems updated on status changes.

### List service zones
Check available delivery areas across Argentina and Latin America by calling `list_coverage_zones`.

## Use Cases

### A customer calls asking, 'Where's my order?'
Instead of having to transfer them to a logistics department, your agent runs `track_shipment` immediately. The AI pulls the current status, the last GPS ping location, and the estimated delivery window, answering the customer in one breath.

### A planner needs to quote 10 different routes.
Instead of filling out a quote form ten times, the planner prompts their agent with a list of origins/destinations. The agent loops through `get_budget`, pulling and comparing rates from Flash Express, Correo Argentino, etc., giving the final cost breakdown instantly.

### The e-comm team has bulk order data.
They don't want to manually enter 50 shipments. They call `create_shipment` with a structured list of orders, and the tool automatically assigns optimal carriers for all 50 deliveries, saving hours of manual work.

### The system needs to know if a delivery is possible.
Before accepting an order from a new zip code, the agent first calls `list_coverage_zones`. If the zone isn't listed, it stops the process and warns the user: 'We can't ship here.' This prevents failed shipments entirely.

## Benefits

- Stop jumping between tabs. Your AI client handles the entire logistics flow, from checking coverage zones with `list_coverage_zones` to creating a shipment with `create_shipment`. It's one conversation, not five dashboards.
- Instant cost comparison is standard. Instead of waiting for a quote form, run `get_budget` and get estimates from multiple carriers immediately. You can compare same-day vs. next-day rates in seconds.
- Real-time tracking isn't just a status update—it's location data. Use `track_shipment` to pull the latest GPS ping and know exactly where that package is right now, not just 'in transit'.
- Automate system synchronization. By calling `create_webhook`, you ensure your internal CRM or ERP gets instant push notifications when a shipment status changes, so nobody misses an update.
- Generate physical assets on demand. Need to print the label? Use `get_shipment_label`. It gives you a fully formatted label with the necessary barcodes and QR codes for the assigned carrier.

## How It Works

The bottom line is, your AI client handles all the API calls—you just talk to it like you're talking to a logistics rep.

1. First, subscribe to the Moova server and provide your unique App ID and App Key credentials.
2. Next, tell your AI client what you need (e.g., 'Get a quote from Buenos Aires to Córdoba').
3. The agent selects and calls the necessary tool (`get_budget` or `create_shipment`) and returns the actionable result.

## Frequently Asked Questions

**How do I check if Moova can ship to my customer's address using list_coverage_zones?**
You run `list_coverage_zones` first. This tool checks the service area database and tells you exactly which delivery zones are available in Argentina and Latin America before you even try creating a shipment.

**What is the difference between get_shipment_status and track_shipment?**
Use `get_shipment_status` for a quick, general check of where it is in the process. Use `track_shipment` when you need the full story: specific GPS coordinates, time stamps, and detailed event logs.

**Can I use create_shipment to just get a cost estimate?**
No. If all you want is a price comparison, call `get_budget`. You only use `create_shipment` when you are ready and authorized to actually pay for and book the shipment.

**Do I need to run list_webhooks manually?**
No. If you're building an automated system, running `create_webhook` is enough. It registers a persistent connection point so that Moova sends status updates automatically when they happen.

**What details must I provide to successfully run the create_shipment tool?**
You must supply full street details, contact information, and package dimensions. Moova needs this data upfront to assign a carrier and route automatically.

**How does get_budget help me compare different shipping costs?**
get_budget returns current pricing estimates from all available carriers. You can compare options like express, same-day, or standard delivery rates before committing to an order.

**When will the update_shipment tool fail? Are there restrictions?**
The update_shipment tool cannot change details after the carrier has physically collected the package. You must make updates while the shipment is still pending pickup.

**If I use list_shipments, how do I narrow down my results by status?**
You pass a specific filter to limit the result set. You can filter by statuses like CREATED, IN_TRANSIT, DELIVERED, or CANCELLED.

**Can my AI agent get an instant shipping quote between two addresses in Argentina?**
Yes! Use the `get_budget` tool with the origin and destination addresses. Moova's smart routing engine will return pricing from all available carriers including same-day, next-day, and standard delivery options.

**How do I track a shipment in real-time and see all delivery events?**
Ask the agent to run `track_shipment` with your shipment ID. You'll receive a chronological list of all tracking events with GPS coordinates, timestamps, and carrier notes — from pickup to final delivery confirmation.

**Can I cancel a shipment that hasn't been picked up yet?**
Yes. Use the `cancel_shipment` tool with the shipment ID. Cancellation is only possible before the carrier picks up the package. Once picked up, the shipment must complete its delivery cycle. A new shipment will need to be created if needed afterward.