{
  "name": "ShipSmarter Shipping Agent",
  "description": "Read-only agent for ShipSmarter, a Canadian multi-carrier shipping platform. Compares live carrier rates for a parcel across Canada Post, Purolator, UPS, FedEx and others, tracks parcels, and reads the shipments and saved addresses on the calling account. Every skill requires an Authorization: Bearer credential (an mc_live_ API key or an OAuth 2.1 access token) and acts only on the account that credential belongs to. This agent cannot buy labels, create shipments, or modify data.",
  "version": "1.0.0",
  "supportedInterfaces": [
    {
      "url": "https://www.shipsmarter.ca/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "url": "https://www.shipsmarter.ca/a2a",
  "protocolVersion": "1.0",
  "provider": {
    "organization": "ShipSmarter",
    "url": "https://www.shipsmarter.ca"
  },
  "documentationUrl": "https://www.shipsmarter.ca/auth.md",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "compare_shipping_rates",
      "name": "Compare shipping rates",
      "description": "Compare live shipping rates for one parcel across every carrier available on the account (Canada Post, Purolator, UPS, FedEx and others). Returns each carrier and service with its total price, currency and estimated transit days. Use this to answer \"what is the cheapest or fastest way to ship this?\" — no single carrier wins on every lane, so the answer depends on weight, size and destination. Prices are live and account-specific; do not cache them.",
      "tags": [
        "shipping",
        "rates",
        "pricing",
        "carriers",
        "comparison",
        "logistics"
      ],
      "examples": [
        "{\"skill\":\"compare_shipping_rates\",\"input\":{\"from_postal\":\"H2X 1Y1\",\"to_postal\":\"M5V 2T6\",\"weight_kg\":2,\"length_cm\":30,\"width_cm\":20,\"height_cm\":10}}",
        "What is the cheapest way to send a 2 kg box from Montreal to Toronto?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "track_parcel",
      "name": "Track a parcel",
      "description": "Look up the live status and checkpoint history of a parcel by its tracking number. Returns the current status, estimated delivery date and the full checkpoint list. Supplying the carrier is optional but makes the lookup faster.",
      "tags": [
        "shipping",
        "tracking",
        "delivery-status",
        "checkpoints",
        "logistics"
      ],
      "examples": [
        "{\"skill\":\"track_parcel\",\"input\":{\"tracking_number\":\"872920229470\"}}",
        "Where is parcel 872920229470 right now?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "list_shipments",
      "name": "List shipments",
      "description": "List shipments on the authenticated account, newest first. Supports paging and filtering by status (for example \"Delivered\" or \"In Transit\"). Use get_shipment for the full record of one shipment.",
      "tags": [
        "shipping",
        "shipments",
        "history",
        "account"
      ],
      "examples": [
        "{\"skill\":\"list_shipments\",\"input\":{\"limit\":10}}",
        "List the shipments created on this account this month."
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "get_shipment",
      "name": "Get one shipment",
      "description": "Retrieve the full record of a single shipment by its ID, including addresses, carrier, service, cost and current status.",
      "tags": [
        "shipping",
        "shipments",
        "details",
        "account"
      ],
      "examples": [
        "{\"skill\":\"get_shipment\",\"input\":{\"id\":\"SHP-9FD8D9B5\"}}",
        "Show me everything about shipment SHP-9FD8D9B5."
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "list_addresses",
      "name": "List saved addresses",
      "description": "List saved addresses from the account address book. Read-only — this server cannot create, change or delete addresses.",
      "tags": [
        "addresses",
        "address-book",
        "account"
      ],
      "examples": [
        "{\"skill\":\"list_addresses\",\"input\":{}}",
        "What addresses are saved on this account?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "description": "An API key prefixed mc_live_, generated by a signed-in account holder under Settings → Developer Hub. Sent as \"Authorization: Bearer mc_live_…\".",
        "location": "header",
        "name": "Authorization"
      }
    },
    "oauth2": {
      "oauth2SecurityScheme": {
        "description": "OAuth 2.1 authorization code with PKCE — short-lived, scoped and revocable, and the right choice for an agent acting on someone else's behalf. Dynamic client registration is open. Ask for resource=https://www.shipsmarter.ca/a2a so the token is audience-bound to this agent.",
        "oauth2MetadataUrl": "https://www.shipsmarter.ca/.well-known/oauth-authorization-server",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://www.shipsmarter.ca/oauth/authorize",
            "tokenUrl": "https://www.shipsmarter.ca/oauth/token",
            "pkceRequired": true,
            "scopes": {
              "rates:read": "Compare live carrier rates for a parcel.",
              "track:read": "Look up live tracking status and checkpoints.",
              "shipments:read": "Read shipments on the account.",
              "addresses:read": "Read the saved address book."
            }
          }
        }
      }
    }
  }
}