If you think MCP is too much bloat for OpenCode and have trouble convincing your models to load skills, then custom tools are the way to go.
As I am using OpenCode with my local models more and more, I regularly find shortcomings compared to commercial coding agents. Some can be fixed by adding customizations (subagents, tools, MCPs, skills, ...), some can't - there's clearly a glass ceiling for smallish models.
Nevertheless, the things I do get to fix and which happen to betools, I add to this repo.
Just copy all files from each tool folder to ~/.config/opencode/tools and
launch via opencode, then watch your agent use the tools! Read the .txt
files for more information on the tools.
Jupyter Notebooks: Allow reading, writing and running (parts of) Jupyter notebooks.
Without this, my agents tried to edit the .ipynb JSON directly, often corrupting
the file in the progress. These tools, inspired by Claude Code, dramatically cut down the token
usage and allow collaborative human-machine coding in Jupyer notebooks.
Includes:
notebook_read: read the full notebook or partsnotebook_edit: add, delete or modify cellsnotebook_run: evaluatecodecells using a Python code interpreter, store results in the notebook
Note: requires copying the notebook_utils.ts, which contains shared functionality between all tools.
Most (especially TypeSxcript since I don't natively speak TS) tools have been written using OpenCode itself. I've reviewed them to the best of my abilities and used multiple review cycles.