There's drag and drop support in streamtuner2 [since primarily meant for exporting individual stations into .XSPF or .PLS files, or dragging them into audio players.

There is also support for proper XDND payloads. However most BSD/Linux desktop applications support little more than `STRING` or `text/uri-list` file dragging.  There's no standardization in or beyond that. Which is because nobody bothers to document anything. So as exception to the rule:


| drag target MIME type | info id | content / payload | actions |
---------------------------------------------------------
| | 20 | | DEFAULT+COPY |
| | 21 | | DEFAULT+COPY |
| | 22 | `<playlist | DEFAULT+COPY |
| <br> | 23 | `<seq>`<br>`<audio | DEFAULT+COPY |
| | 25 | `{ "playlist": {`<br>`"track":{`<br>`"location": | DEFAULT+COPY |
| | 26 | `[Desktop | DEFAULT+COPY |
| | 27 | | DEFAULT+COPY |
| | 15 | | DEFAULT+COPY |
| <kbd>FILE_NAME</kbd> | 3 | | DEFAULT+COPY |
| | 4 | | DEFAULT+COPY |
| <kbd>TEXT</kbd><br> <kbd>STRING</kbd><br> <kbd>UTF8_STRING</kbd><br> | 5 | Title: Radio`<br>`# Description: Current song etc..` | DEFAULT+COPY |
| <br>*(internal JSON format)* | 51 | `[`<br>&nbsp;`{`<br>&nbsp;&nbsp;`"url": "Radio station name"`<br>&nbsp;`},`<br>… | SAMEAPP+ACTIONMOVE |

<style>
 .content table td { border-bottom: 3px dashed #ddd; }
 .content table td { font-size: 80%; }
</style>
<small>

 - The example payloads are abstracted here.
 - The info ids are just Gtk-internal.
 - Ordering doesn't reflect priority handling.

</small>

As said, only is used in practice.  It doesn't allow actual streaming URLs being transferred. Instead streamtuner2 has to create temporary export files. And since this dumb approach doesn't allow any content-negotation, a preconfigured default playlist format will be used for temp files. (Defaults to XSPF for crashing Rhythmbox.)

Alternatively there's now (yes, why not go with the century?) and to get a direct streaming URL/IRL.