Skip to main content
Glama

UPS MCP Server

MIT License Node.js 20+ MCP TypeScript npm

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_shipment

Create a shipment and generate a shipping label

void_shipment

Cancel a shipment and void its label

track_package

Track a package with full activity history

get_rates

Get shipping rates for all available services

get_time_in_transit

Get estimated delivery dates

validate_address

Validate US/PR addresses

schedule_pickup

Schedule a package pickup

cancel_pickup

Cancel a scheduled pickup

find_locations

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-mcp

Or install globally:

npm install -g ups-mcp

Configuration

Environment Variables

Variable

Required

Description

UPS_CLIENT_ID

Yes

OAuth Client ID from UPS Developer Portal

UPS_CLIENT_SECRET

Yes

OAuth Client Secret

UPS_ENVIRONMENT

No

sandbox (default) or production

UPS_ACCOUNT_NUMBER

No

6-digit UPS account (required for shipping/rating)

Client

Config file

Cursor (project)

.cursor/mcp.json

Cursor (global)

~/.cursor/mcp.json

Claude Desktop

claude_desktop_config.json

VS Code

.vscode/mcp.json

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 build

Testing with MCP Inspector

npm run inspector

Running locally

cp .env.example .env
# Edit .env with your credentials
npm run build
node dist/index.js

Architecture

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 types

Security

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 tools
cancel_pickupCancel PickupA

Cancel a previously scheduled UPS pickup by confirmation number.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmationNumberYesPickup confirmation number from schedule_pickup

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceNoUPS service code (e.g. "03" for Ground, "01" for Next Day Air)03
shipFromYesOrigin/sender address
shipToYesDestination/recipient address
packagesYesArray of packages (1-200)
descriptionNoShipment description
referenceNumberNoYour reference number for this shipment
labelFormatNoLabel image formatGIF

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
postalCodeYesZIP/postal code to search near
countryCodeNoCountry codeUS
cityNoCity name (optional, refines search)
stateProvinceCodeNoState code (optional)
typeNoLocation type filterall
radiusNoSearch radius in miles
maxResultsNoMaximum number of results

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceNoSpecific service code, or omit for all available rates
shipFromYesOrigin address (city/state/zip required)
shipToYesDestination address (city/state/zip required)
packagesYesPackages to rate

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
shipFromYes
shipToYes
weightYesTotal shipment weight in lbs
shipDateNoShip date in YYYY-MM-DD format (defaults to today)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pickupDateYesPickup date in YYYYMMDD format
readyTimeYesEarliest pickup time in HHmm format (e.g. "0900")
closeTimeYesLatest pickup time in HHmm format (e.g. "1700")
nameYesContact name at pickup location
phoneYesContact phone number
addressLine1YesPickup street address
addressLine2NoAddress line 2
cityYesCity
stateProvinceCodeYesState/province code
postalCodeYesZIP/postal code
countryCodeNoCountry codeUS
packageCountYesNumber of packages
totalWeightYesTotal weight in lbs
serviceCodeNoPickup service code (003=On Call Air, 001=Daily)003
specialInstructionsNoSpecial instructions for driver

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackingNumberYesUPS tracking number (7-34 characters)
localeNoLocale for response (e.g. en_US, ja_JP)en_US
returnSignatureNoInclude signature requirement details
returnMilestonesNoInclude detailed movement milestones
returnPODNoInclude proof of delivery information

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressLine1YesStreet address (e.g. "123 Main St")
addressLine2NoApartment, suite, unit (e.g. "Apt 4B")
cityYesCity or town name
stateProvinceCodeYesTwo-letter state code (e.g. "GA")
postalCodeYes5-digit ZIP code
countryCodeNoCountry code (US or PR)US

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
shipmentIdentificationNumberYesThe shipment identification number returned from create_shipment

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 9 tool updatesv0.1.0
    • First observedcancel_pickup
    • First observedcreate_shipment
    • First observedfind_locations
    • First observedget_rates
    • First observedget_time_in_transit
    • First observedschedule_pickup
    • First observedtrack_package
    • First observedvalidate_address
    • First observedvoid_shipment

TDQS

A4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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).

Tool Count5/5

9 tools is well-scoped for a UPS integration server, covering essential workflows without unnecessary bloat or insufficient functionality.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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