- discover all the interpreters on the system for the language (e.g. 'find me all the Pythons')
- start an interpreter session for the language
- run a fragment of code in the language and return the result
- get all the variables in the current interpreter session for the language
- view data defined in a particular variable
etc.
We generally try not to invent new protocols; in addition to LSP and DAP, we use Jupyter messages and kernels for most of the above. Positron only has custom protocols/APIs for the bits that are outside the purview of existing protocols.