UPS MCP Server
Provides tools for UPS shipping and logistics, including creating shipments, tracking packages, getting rates, validating addresses, scheduling pickups, and finding UPS locations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@UPS MCP Servertrack package 1Z999AA10123456784"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
UPS MCP Server
A Model Context Protocol server for UPS shipping and logistics APIs. Enables AI agents to create shipments, track packages, get rates, validate addresses, schedule pickups, and find UPS locations.
Quick Install
Add to your MCP config (~/.cursor/mcp.json, .cursor/mcp.json, or claude_desktop_config.json):
{
"mcpServers": {
"ups": {
"command": "npx",
"args": ["-y", "ups-mcp"],
"env": {
"UPS_CLIENT_ID": "your_client_id",
"UPS_CLIENT_SECRET": "your_client_secret",
"UPS_ACCOUNT_NUMBER": "123456",
"UPS_ENVIRONMENT": "sandbox"
}
}
}
}Get your credentials at the UPS Developer Portal.
Tools
Tool | Description |
| Create a shipment and generate a shipping label |
| Cancel a shipment and void its label |
| Track a package with full activity history |
| Get shipping rates for all available services |
| Get estimated delivery dates |
| Validate US/PR addresses |
| Schedule a package pickup |
| Cancel a scheduled pickup |
| Find nearby UPS stores and drop-off points |
Related MCP server: Easyship MCP
Prerequisites
Node.js 20+
UPS Developer Portal credentials (Get started)
UPS account number (for shipping and rating)
Installation
npx ups-mcpOr install globally:
npm install -g ups-mcpConfiguration
Environment Variables
Variable | Required | Description |
| Yes | OAuth Client ID from UPS Developer Portal |
| Yes | OAuth Client Secret |
| No |
|
| No | 6-digit UPS account (required for shipping/rating) |
Client | Config file |
Cursor (project) |
|
Cursor (global) |
|
Claude Desktop |
|
VS Code |
|
Usage Examples
Create a Shipment
"Ship a 5lb package from 123 Main St, Atlanta GA 30301 to 456 Oak Ave, Los Angeles CA 90001 via UPS Ground"
Get Rates
"What are the shipping rates for a 10lb package from NYC to Chicago?"
Track a Package
"Track package 1Z999AA10123456784"
Validate an Address
"Is 1600 Pennsylvania Ave NW, Washington DC 20500 a valid address?"
Schedule a Pickup
"Schedule a pickup tomorrow at 9am for 3 packages at our warehouse"
Development
git clone https://github.com/roscoej/ups-mcp.git
cd ups-mcp
npm install
npm run buildTesting with MCP Inspector
npm run inspectorRunning locally
cp .env.example .env
# Edit .env with your credentials
npm run build
node dist/index.jsArchitecture
src/
├── index.ts # Entry point (stdio transport)
├── config.ts # Environment variable resolution
├── server.ts # MCP server factory
├── client/
│ ├── auth.ts # OAuth 2.0 token manager
│ ├── http.ts # HTTP client with retry + error handling
│ └── errors.ts # Structured error types
├── tools/
│ ├── tracking.ts # track_package
│ ├── shipping.ts # create_shipment, void_shipment
│ ├── rating.ts # get_rates, get_time_in_transit
│ ├── address.ts # validate_address
│ ├── pickup.ts # schedule_pickup, cancel_pickup
│ ├── locator.ts # find_locations
│ ├── builders.ts # Shared request payload builders
│ ├── constants.ts # UPS API codes and enumerations
│ └── schemas.ts # Zod input schemas
└── types/
├── config.ts # Server configuration
├── shipping.ts # Shipment types + service codes
├── tracking.ts # Tracking types
├── rating.ts # Rating types
├── address.ts # Address validation types
└── pickup.ts # Pickup typesSecurity
Your API credentials are sensitive. Never commit them to version control. Use environment variables or a secrets manager.
Disclaimer
This project is an independent, unofficial, third-party tool. It is not affiliated with, endorsed by, sponsored by, or in any way officially connected to United Parcel Service, Inc. (UPS) or any of its subsidiaries.
"UPS" and the UPS brandmark are registered trademarks of United Parcel Service of America, Inc. All other trademarks are property of their respective owners. Use of these names is for identification and interoperability purposes only and does not imply endorsement.
This software is provided "AS IS", without warranty of any kind. You are solely responsible for:
Complying with the UPS Technology Agreement and all applicable UPS terms of service, rate limits, and acceptable-use policies.
Securing your API credentials and UPS account.
All activity conducted through your UPS account via this tool.
Compliance with all applicable laws and regulations in your jurisdiction.
The authors and contributors accept no liability for damages arising from the use of this software or the UPS APIs accessed through it.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
License
MIT
Available Tools
9 toolscancel_pickupCancel PickupA
Cancel a previously scheduled UPS pickup by confirmation number.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmationNumber | Yes | Pickup confirmation number from schedule_pickup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden; it conveys the mutation action but omits potential side effects, reversibility, or constraints like cancellable window.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence efficiently conveys the tool's purpose without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one parameter, no output schema), the description is sufficient, though it could briefly note expected outcomes or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter; the description restates the parameter without adding new meaning, matching the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (cancel), the resource (previously scheduled UPS pickup), and the required input (confirmation number), making it distinct from sibling tools like schedule_pickup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use after scheduling a pickup but lacks explicit when-to-use or when-not-to-use guidance, such as prerequisites or state requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_shipmentCreate ShipmentA
Create a UPS shipment and generate a shipping label. Supports all UPS domestic and international services. Returns tracking number, charges, and label image (base64-encoded GIF by default). Common service codes: 03=Ground, 02=2nd Day Air, 01=Next Day Air, 13=Next Day Air Saver, 12=3 Day Select, 07=Express (intl), 11=Standard (intl).
| Name | Required | Description | Default |
|---|---|---|---|
| service | No | UPS service code (e.g. "03" for Ground, "01" for Next Day Air) | 03 |
| shipFrom | Yes | Origin/sender address | |
| shipTo | Yes | Destination/recipient address | |
| packages | Yes | Array of packages (1-200) | |
| description | No | Shipment description | |
| referenceNumber | No | Your reference number for this shipment | |
| labelFormat | No | Label image format | GIF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry the burden. It discloses that it creates a shipment and returns data, but does not mention that it actually books the shipment (which incurs costs) or any prerequisites like having a valid UPS account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and includes only relevant additional details (service codes, return data) without superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of nested objects and no output schema, the description covers the key return values (tracking number, charges, label) and service codes. Missing are prerequisites or error handling, but overall it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains each parameter well. The description adds value by listing common service codes with their meanings and indicating the default label format (GIF).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a UPS shipment and generate a shipping label' and lists what it returns (tracking number, charges, label image), distinguishing it from sibling tools like get_rates or track_package.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through its purpose and service code list, but does not explicitly explain when to use it over alternatives like get_rates for cost estimation or schedule_pickup for pickup needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_locationsFind UPS LocationsA
Find nearby UPS locations, Access Points, and drop-off points. Search by address or postal code. Returns locations with services available, hours of operation, and distance from the search point.
| Name | Required | Description | Default |
|---|---|---|---|
| postalCode | Yes | ZIP/postal code to search near | |
| countryCode | No | Country code | US |
| city | No | City name (optional, refines search) | |
| stateProvinceCode | No | State code (optional) | |
| type | No | Location type filter | all |
| radius | No | Search radius in miles | |
| maxResults | No | Maximum number of results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes search inputs and return fields, but does not mention behavioral traits like rate limits, authentication, or read-only nature. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and contains no redundant words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description explains return values (services, hours, distance). This is sufficient for a simple search tool, though it could mention pagination or error behavior. Overall complete given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal meaning beyond the schema (e.g., 'nearby' aligns with radius). It does not elaborate on parameter formats or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds UPS locations, Access Points, and drop-off points. It uses a specific verb ('Find') and resource ('UPS locations'), and distinguishes from sibling tools (which are about shipping and tracking).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding nearby locations, but does not explicitly contrast with siblings or state when not to use. Since siblings are unrelated (shipping, tracking), the context is clear, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ratesGet Shipping RatesA
Get shipping rates for a package between two addresses. Returns available service options with prices, transit times, and delivery guarantees. Omit the service code to get rates for ALL available services (shop rates). Common codes: 03=Ground, 02=2nd Day Air, 01=Next Day Air, 12=3 Day Select.
| Name | Required | Description | Default |
|---|---|---|---|
| service | No | Specific service code, or omit for all available rates | |
| shipFrom | Yes | Origin address (city/state/zip required) | |
| shipTo | Yes | Destination address (city/state/zip required) | |
| packages | Yes | Packages to rate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses that the tool returns available service options with prices, transit times, and delivery guarantees. It does not explicitly state side-effect free behavior, but the get operation is inherently read-only. The description is sufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences. The first states the purpose, the second explains returns, and the third provides a usage hint and common codes. Front-loaded and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 parameters, nested objects, no output schema), the description adequately covers the tool's functionality, return values, and a key usage nuance (omitting service code). The schema covers the rest, making the description complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions (100% coverage, baseline 3). The description adds value by listing common service codes (03=Ground, etc.) and explaining the behavior of omitting the service code, which goes beyond baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get shipping rates for a package between two addresses' and explains what it returns (service options, prices, transit times, delivery guarantees). It also provides common service codes, making the tool's purpose extremely clear and differentiating it from siblings like 'get_time_in_transit'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating 'Omit the service code to get rates for ALL available services (shop rates)' but does not explicitly compare to alternatives or state when not to use. It provides clear context for using the tool, earning a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_in_transitGet Time in TransitB
Get estimated delivery dates and transit times between two locations. Returns the expected delivery date and time for each available UPS service.
| Name | Required | Description | Default |
|---|---|---|---|
| shipFrom | Yes | ||
| shipTo | Yes | ||
| weight | Yes | Total shipment weight in lbs | |
| shipDate | No | Ship date in YYYY-MM-DD format (defaults to today) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns estimated delivery dates and transit times, which implies a read operation with no side effects. However, it does not elaborate on behaviors like error handling, default values, or limitations (e.g., geographical scope). The disclosure is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that immediately convey the core purpose. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters including nested objects and no output schema. The description provides no information about return format, expected values, or how to interpret results. An agent would lack essential context to correctly process the output, making the description incomplete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all parameters, but the tool description adds no additional meaning beyond the schema. Given 50% schema description coverage (per context signal), the description fails to compensate by explaining parameter structures, defaults (e.g., shipDate defaults to today, countryCode defaults to US), or relationships between parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'estimated delivery dates and transit times', and the scope 'between two locations' and 'for each available UPS service'. This distinguishes it from sibling tools like track_package and get_rates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or compare to siblings like track_package or get_rates. An agent would need to infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_pickupSchedule PickupB
Schedule a UPS package pickup at a specific address and time. Provide the pickup date, time window, address, and package details. Returns a confirmation number to reference or cancel the pickup.
| Name | Required | Description | Default |
|---|---|---|---|
| pickupDate | Yes | Pickup date in YYYYMMDD format | |
| readyTime | Yes | Earliest pickup time in HHmm format (e.g. "0900") | |
| closeTime | Yes | Latest pickup time in HHmm format (e.g. "1700") | |
| name | Yes | Contact name at pickup location | |
| phone | Yes | Contact phone number | |
| addressLine1 | Yes | Pickup street address | |
| addressLine2 | No | Address line 2 | |
| city | Yes | City | |
| stateProvinceCode | Yes | State/province code | |
| postalCode | Yes | ZIP/postal code | |
| countryCode | No | Country code | US |
| packageCount | Yes | Number of packages | |
| totalWeight | Yes | Total weight in lbs | |
| serviceCode | No | Pickup service code (003=On Call Air, 001=Daily) | 003 |
| specialInstructions | No | Special instructions for driver |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description only mentions returning a confirmation number. Missing details on side effects (e.g., whether a pickup is actually scheduled), required permissions, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundancy. Front-loaded with the primary action and outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 15 parameters and no output schema, the description lacks explanation of return values (e.g., structure of confirmation number), error handling, or prerequisites, leaving gaps for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are documented. The description adds no additional semantic depth beyond summarizing input categories (date, time, address, package details).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool schedules a UPS pickup, specifies required inputs (date, time, address, package details), and notes the return of a confirmation number, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like cancel_pickup or create_shipment. The description does not provide exclusions or alternative contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_packageTrack PackageA
Track a UPS package by tracking number. Returns current status, delivery estimate, and full activity history. Optionally includes signature details, milestones, and proof of delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| trackingNumber | Yes | UPS tracking number (7-34 characters) | |
| locale | No | Locale for response (e.g. en_US, ja_JP) | en_US |
| returnSignature | No | Include signature requirement details | |
| returnMilestones | No | Include detailed movement milestones | |
| returnPOD | No | Include proof of delivery information |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden for behavioral disclosure. It explains return values but does not mention rate limits, authentication, error handling, or side effects (e.g., mutations).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, and no wasted words. The optional return details are listed succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately covers return values (status, estimate, history, optional details). However, it lacks information on error conditions, performance, or locale-specific behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with decent descriptions for each parameter. The description adds value by explaining what the tool returns but does not clarify param semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool tracks a UPS package by tracking number, and specifies what it returns (status, delivery estimate, activity history). It distinguishes itself from sibling tools, none of which track packages (e.g., cancel_pickup, create_shipment).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating 'Track a UPS package by tracking number,' but it does not explicitly mention when not to use or provide alternatives. No guidance on unsupported carriers or invalid tracking numbers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_addressValidate AddressB
Validate a US or Puerto Rico address using UPS Address Validation. Returns whether the address is valid, classification (residential/commercial), and suggested corrections if ambiguous.
| Name | Required | Description | Default |
|---|---|---|---|
| addressLine1 | Yes | Street address (e.g. "123 Main St") | |
| addressLine2 | No | Apartment, suite, unit (e.g. "Apt 4B") | |
| city | Yes | City or town name | |
| stateProvinceCode | Yes | Two-letter state code (e.g. "GA") | |
| postalCode | Yes | 5-digit ZIP code | |
| countryCode | No | Country code (US or PR) | US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It mentions return values but omits behavioral traits like authentication requirements, rate limits, side effects, or error conditions. For a validation tool, this is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, front-loaded with key information. Could be slightly more structured (e.g., separate output description), but overall very concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters and no output schema, description covers purpose and basic output (validity, classification, corrections). However, it lacks details on return format, error handling, or behavior for invalid addresses. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The tool description does not add extra meaning beyond the schema's parameter descriptions. It correctly implies address components but adds no new semantic details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb+resource: 'Validate a US or Puerto Rico address'. Distinguishes from sibling tools (e.g., create_shipment, track_package) by focusing on validation. Mentions specific service (UPS Address Validation) and return types (validity, classification, corrections).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implied usage: validating addresses. But lacks explicit guidance on when to use vs alternatives (e.g., before shipping, after data entry). No exclusions or comparisons to siblings like create_shipment or get_rates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
void_shipmentVoid ShipmentA
Cancel a shipment and void its label. Use when a shipment has been created but not yet picked up or tendered to UPS. The tracking number becomes invalid after voiding.
| Name | Required | Description | Default |
|---|---|---|---|
| shipmentIdentificationNumber | Yes | The shipment identification number returned from create_shipment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tracking number becomes invalid, but does not mention irreversibility or effects on related data like pickups.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the main action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter tool with no output schema, the description covers purpose, usage condition, and a consequence. Could mention permanence, but still fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Cancel' and the resource 'a shipment', and distinguishes from siblings like 'cancel_pickup' by focusing on voiding the label.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when a shipment has been created but not yet picked up or tendered', providing clear usage context. It does not mention when not to use or offer alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v0.1.0- First observed
cancel_pickup - First observed
create_shipment - First observed
find_locations - First observed
get_rates - First observed
get_time_in_transit - First observed
schedule_pickup - First observed
track_package - First observed
validate_address - First observed
void_shipment
TDQS
Each tool targets a distinct UPS operation: pickup management, shipment creation, location lookup, rate quoting, transit time, scheduling, tracking, address validation, and voiding, with no overlap in purpose.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., cancel_pickup, create_shipment, find_locations, get_rates, get_time_in_transit, schedule_pickup, track_package, validate_address, void_shipment).
9 tools is well-scoped for a UPS integration server, covering essential workflows without unnecessary bloat or insufficient functionality.
Covers core UPS operations: create, track, void shipments; get rates and transit times; validate addresses; schedule/cancel pickups; find locations. Minor gaps like shipment listing or label reprint, but complete for primary use cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Multi-carrier shipping for AI agents: compare rates, buy labels, track packages, validate addresses
India shipping for AI agents: Shiprocket courier serviceability, create orders, track AWB.
US shipping labels for AI agents: buy USPS/UPS/FedEx, track and refund via EasyPost.
Global shipping labels for AI agents via AfterShip with your own carrier accounts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to integrate with UPS shipping and logistics capabilities, including package tracking with delivery status and transit information, and address validation for U.S. and Puerto Rico locations.29MIT

Easyship MCPofficial
AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage global shipping operations, including rate comparison, shipment creation, label purchasing, tracking, pickup scheduling, address validation, billing, and analytics, via natural language.17MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to buy US shipping labels (USPS, UPS, FedEx) with automatic cheapest-rate selection, track parcels, and refund unused labels via the EasyPost API. Stateless, bring-your-own API key, free test keys available.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to ship parcels in Japan via Yamato, Sagawa, Japan Post, and other carriers, including rate estimation, label creation, tracking, and voiding through the Ship&co API.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/roscoej/ups-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server