I think it makes more sense to think of them as agent software plugins than a protocol that makes sense in isolation. The reason for its existence is because you want your <thing> to work with someone's AI agent. You write some code, your user integrates it with their local software and you provide data to it in the format that it's expecting and do stuff when asked.
https://github.com/block/goose tutorials page finally made it click for me. Concrete examples. Anthropic should link directly out to that from their docs.