Register a new production app in the FedEx Developer Portal to obtain client_id and client_secret for OAuth 2.0
POST to /oauth/token with grant_type=client_credentials to obtain a bearer token; cache it with a TTL slightly under 3600 seconds
Map legacy SOAP ShipService request fields (ServiceType, PackagingType, Weight) to the REST Ship API v1 JSON body equivalents
Replace XML-based label response (base64 Image) with the REST response's labelResponseOptions field; set it to LABEL to get inline PNG or PDF bytes
Test with FedEx sandbox credentials; verify that tracking number, label PDF, and encoded routing data are all returned correctly
Decommission the SOAP WSDL client and update error handling to parse REST HTTP status codes and error.code fields instead of SOAP faults
Known gotchas
The REST API uses a different set of service type codes than SOAP; do not assume string values are identical across versions
OAuth tokens are scoped to a single app and cannot be shared across multiple shipper account numbers without registering separate apps or using child credentials
FedEx sandbox and production endpoints are different base URLs; ensure environment-specific configuration to avoid accidental production label purchases during testing
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp