jupyter_server icon indicating copy to clipboard operation
jupyter_server copied to clipboard

[Feature] New API to discover, fetch, and call tools from server extensions

Open Abigayle-Mercer opened this issue 5 months ago • 5 comments

This adds a structured tool discovery interface via ExtensionPoint.tools, aggregated through ExtensionManager.get_tools, and exposed in ServerApp via get_tools. Was not sure how far to 'lift' this functionality.

It also introduces a new REST endpoint at /api/tools, implemented in a new ListToolInfoHandler class under services/contents/handlers.py. I am also unsure if this is the best place to put the ListToolInfoHandler.

Still exploring if we should, and how best we would integrate the "run tool" functionality from structured tool calls — would love guidance on that.

Still needs unit tests, will probably implement those once the full functionality integration is complete.

Feedback welcome and needed!

@Zsailer Would love your thoughts on:

  • Overall structure

  • Handler placement (under services/contents or maybe a new service? services/tools?)

  • Logger usage (especially in ExtensionPoint.tools)

Abigayle-Mercer avatar May 10 '25 18:05 Abigayle-Mercer