AI agents in VS Code don't understand that .deepnote files are notebooks. They can't browse, read, edit, or execute blocks the way they can with .ipynb files. We want agents to be first-class citizens when working with Deepnote notebooks.
Proposal
Register four Language Model Tools via the VS Code languageModelTools contribution point.
ListNotebooks
Returns a list of all .deepnote files in the workspace with their paths and notebook names.
ReadNotebook
Returns the structure and content of a notebook — block IDs, types, source content, and a summary of any existing outputs.
EditNotebook
Adds, updates, or removes blocks in a notebook.
RunBlocks
Executes one or more blocks and returns the outputs (stdout, stderr, errors, and a summary of rich outputs like DataFrames and charts).
Registration
Cross-editor support
These tools use the VS Code languageModelTools API which works with Copilot but not in Cursor or Windsurf. For cross-editor support we should also expose the same capabilities via an MCP server (tracked separately).
AI agents in VS Code don't understand that
.deepnotefiles are notebooks. They can't browse, read, edit, or execute blocks the way they can with.ipynbfiles. We want agents to be first-class citizens when working with Deepnote notebooks.Proposal
Register four Language Model Tools via the VS Code
languageModelToolscontribution point.ListNotebooksReturns a list of all
.deepnotefiles in the workspace with their paths and notebook names.ReadNotebookReturns the structure and content of a notebook — block IDs, types, source content, and a summary of any existing outputs.
EditNotebookAdds, updates, or removes blocks in a notebook.
RunBlocksExecutes one or more blocks and returns the outputs (stdout, stderr, errors, and a summary of rich outputs like DataFrames and charts).
Registration
Cross-editor support
These tools use the VS Code
languageModelToolsAPI which works with Copilot but not in Cursor or Windsurf. For cross-editor support we should also expose the same capabilities via an MCP server (tracked separately).