# Dependency Upgrade Plan

> Dependency Upgrade Plan is a paid API for AI agents from upgrade-brief.shopttyass-85f.workers.dev, paid per call via x402, $0.02/call, status unknown (last checked 2026-10-28).

Returns a risk-ordered upgrade plan for up to 5 npm or PyPI packages, including breaking changes, major bumps, peer dependency shifts, migration guide links, and risk scores.

## Facts

- Endpoint: GET https://upgrade-brief.shopttyass-85f.workers.dev/upgrade-plan?utm_source=zero.xyz
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-28
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/dependency-upgrade-plan-1a980fe5
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Ng3nss7RZPl5-_IOqTl-n

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability dependency-upgrade-plan-1a980fe5
```

Example prompt: Can you give me an upgrade plan for react@18.3.1 to 19, react-dom@18.3.1 to 19, and next@14.2.0 to 15 — show me the breaking changes, risk scores, peer dependency conflicts, and any migration guides, ordered by upgrade risk?

## When to prefer this

Use this endpoint when you need a consolidated, risk-ranked upgrade plan across multiple interdependent packages (up to 5) in a single call, especially when peer dependency conflicts between packages matter. Prefer it over single-package changelog endpoints when the user is planning a coordinated upgrade of related packages like the React ecosystem or a Python data stack and wants to know which upgrade is riskiest and how the packages interact.

## Known failure modes

- Unknown or misspelled package name returns an error field for that package
- Version range not found in registry results in degraded response
- More than 5 packages in the request is rejected
- Invalid ecosystem enum value causes a validation error
- Package with no published changelog may return empty breaking changes with degraded flag set to true

## How this service works

Dependency upgrade plan for up to 5 npm or PyPI packages in one call (e.g. react, react-dom and next together): for each package the breaking changes between your version and the target, major bumps, Node.js or Python and peer dependency changes, migration guide links and a risk score, ordered by upgrade risk, plus the peer dependency requirements between the listed packages (next 15 needs react 19). Built from real changelogs and GitHub releases.

## Output

A JSON object with packages sorted by upgrade risk (highest first), each containing: risk score (0–100), verdict (e.g. BREAKING_CHANGES_LIKELY), list of top breaking changes with version, major bump list, peer dependency hints, manifest flags (e.g. Node.js engine changes), and migration guide URLs. Also includes cross-package peer dependency hints (e.g. next@15 requires react@19) and an overall summary string.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "packages"
     ],
     "properties": {
      "packages": {
       "type": "string",
       "description": "Comma-separated dependencies to upgrade, each name@from[:to] (to defaults to latest), up to 5. e.g. 'react@18.3.1:19,next@14.2.0:15,eslint@8.57.0'"
      },
      "ecosystem": {
       "enum": [
        "npm",
        "pypi"
       ],
       "type": "string",
       "default": "npm",
       "description": "Registry of all listed packages"
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "order": {
       "type": "string"
      },
      "summary": {
       "type": "string"
      },
      "degraded": {
       "type": "boolean"
      },
      "packages": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "to": {
          "type": "string"
         },
         "from": {
          "type": "string"
         },
         "risk": {
          "type": "number"
         },
         "error": {
          "type": [
           "string",
           "null"
          ]
         },
         "package": {
          "type": "string"
         },
         "verdict": {
          "type": "string"
         },
         "peerHints": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "majorBumps": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "topBreaking": {
          "type": "array",
          "items": {
           "type": "object",
           "properties": {
            "text": {
             "type": "string"
            },
            "version": {
             "type": "string"
            }
           }
          }
         },
         "breakingCount": {
          "type": "integer"
         },
         "manifestFlags": {
   
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "order": "highest upgrade risk first (major bumps, documented breaking items, manifest changes, missing notes)",
  "summary": "next 14.2.0->15.0.0: BREAKING_CHANGES_LIKELY, 1 major, 29 breaking item(s); react-dom 18.3.1->19.0.0: BREAKING_CHANGES_LIKELY, 1 major, 18 breaking item(s); react 18.3.1->19.0.0: BREAKING_CHANGES_LIKELY, 1 major, 18 breaking item(s)",
  "degraded": false,
  "packages": [
   {
    "to": "15.0.0",
    "from": "14.2.0",
    "risk": 16.7,
    "error": null,
    "package": "next",
    "verdict": "BREAKING_CHANGES_LIKELY",
    "peerHints": [
     "next@15.0.0 requires peer react@^18.2.0 || 19.0.0-rc-65a56d0e-20241020 (was ^18.2.0)"
    ],
    "majorBumps": [
     "15.0.0"
    ],
    "topBreaking": [
     {
      "text": "[Breaking] Disable automatic fetch caching: #66004",
      "version": "15.0.0"
     }
    ],
    "breakingCount": 29,
    "manifestFlags": [
     "Node.js engine requirement changed: >=18.17.0 -> >=18.18.0"
    ],
    "migrationGuides": []
   }
  ],
  "ecosystem": "npm",
  "peerHints": [
   "react-dom@19.0.0 requires peer react@^19.0.0 (was ^18.3.1)"
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/dependency-upgrade-plan-1a980fe5/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from upgrade-brief.shopttyass-85f.workers.dev](https://www.zero.xyz/host/upgrade-brief.shopttyass-85f.workers.dev/llms.txt)
