Carrier is its own endpoint
Carrier lookup moved from phone deep to /carrier. It answers a different question, with its own URL, page, and monthly allowance.
Checking whether a phone number is valid and finding its carrier are different jobs. I split carrier lookup into its own endpoint because putting it behind ?deep=true made that distinction harder to explain.
GET /carrier/+14155552671
/carrier returns the carrier name, line type including voip, a burner flag, and the city where the number was issued. /phone handles validation, formatting, and information from the numbering plan. You choose the endpoint based on the answer you need.
The same choice should make sense before you ever write a request. Someone searching for carrier lookup should land on a page about carrier lookup, with the price and an example in front of them. They should not have to work out which part of a phone API page applies to them.
What deep is for
For email, ?deep=true takes the same question further. An address can have valid syntax and still fail a delivery check, so checking deliverability belongs with email validation.
Carrier lookup has a different purpose. It now has its own monthly allowance, and each valid-number lookup that returns a result counts against it, including cached results. The move changed the URL, while keeping the included-usage and on-demand billing model.
Caller ID and live status follow the same arrangement at /caller and /hlr. Each has its own allowance and a page that explains the check. The /carrier page is where to start if the carrier is what you came for.