It seems to be a more structured representation of the type. Normally in LSP you'd have a plain string or markdown that you render in the IDE, but nothing that you can analyse structurally.

It's a shame it's not just an LSP extension though, or a feature in a newer LSP version. LSP is maintained by Microsoft engineers.

workspace/symbol will do it (and the output may need some massaging), but it's optional.

I thought workspace/symbol returns an unstructured payload wrapped w/ some metadata.

Since the format is unspecified I imagine many language servers would just return a string representation of the type, which in Python is a PITA to parse because not every type has a closed-form representation (overloaded callable types, for example, have to be declared as a protocol).

Fair enough, I had no idea it was unstructured.