toolnexus for Clojure — MCP servers, SKILL.md skills, and the tool-calling loop, from one .cljc tree {:deps {net.clojars.muthuishere/toolnexus {:mvn/version "0.13.0"}}} toolnexus is a vendor-neutral library that turns everything an LLM can call into one Tool interface: MCP servers (stdio + streamable HTTP), agent skills discovered from /SKILL.md, your own fns, remote HTTP endpoints, and sub-agents with budgets. It emits schemas in OpenAI / Anthropic / Gemini shape and ships the tool-calling loop — system prompt, skills injection, parallel and chained calls, hooks, streaming, retries, memory — so you don't hand-roll it per provider. The Clojure port is the seventh, and it is a real port, not a wrapper: same behavioural contract as js / python / go / java / c# / elixir, checked against shared fixtures. What's worth reporting to this room is how it was built. It's a single .cljc tree with zero reader conditionals — the same source runs on the JVM and on cljgo (a Clojure-to-Go compiler), with host differences isolated behind koine. Five execution modes gated in CI, 395 tests / 1,614 assertions, and the two hosts have to agree exactly. Running the same library on two hosts is also the best bug-finder I've had. It shook out three silent-failure classes in cljgo (descending range through some paths, unknown option-map keys now raising instead of being ignored, :timeout-ms standardised) and made me withdraw three of my own published performance claims after re-measuring — the Clojure port is currently the slowest of the seven (~5.5 ms p50 over MCP vs 0.49 ms for Go), and the numbers are on the site rather than buried. The bottleneck is the stdio JSON-RPC path, not the loop. Examples you can run on both hosts: https://github.com/muthuishere/toolnexus/tree/main/clojure/examples https://muthuishere.github.io/toolnexus/
Please don't post releases for a project more than once a month in #C06MAR553 -- additional releases belong in #C015AL9QYH1
I dropped the cljgo 0.9.0 release post and updated only for toolnexus. toolnexus 0.13.0 is on Clojars — a .cljc library for building MCP hosts in Clojure (not just servers). Read an mcp.json, and every MCP tool, every SKILL.md agent skill, and every fn of your own shows up behind one Tool interface, with the tool-calling loop already written. Same source runs on JVM and compiles native via cljgo — zero reader conditionals, 395 tests across five CI-gated modes. {net.clojars.muthuishere/toolnexus {:mvn/version "0.13.0"}}
https://github.com/seancorfield/honeysql https://github.com/seancorfield/honeysql/releases/tag/v2.7.1436 -- Turn Clojure data structures into SQL
The CVE fix back in June was too aggressive and broke inline string handling for certain strings for non-MySQL dialects
• Address https://github.com/seancorfield/honeysql/issues/607 by only applying special \' handling when the dialect is MySQL or :standard-conforming-strings is false (the default is true).
• Update jolt-lang/time dependency.
• Update dev/test deps.
Follow-up in #C66EM8D5H
https://github.com/seancorfield/deps-new https://github.com/seancorfield/deps-new/releases/tag/v0.13.0 3406dff -- Create new projects for the Clojure CLI / deps.edn
clojure -Ttools install-latest :lib io.github.seancorfield/deps-new :as new
• Address https://github.com/seancorfield/deps-new/issues/78 by adding :raw-exts option to template.edn to augment the list of file extensions that are not processed for substitutions (and are copied as-is). This currently patches tools.build to workaround a https://ask.clojure.org/index.php/15208/tools-build-copy-task-does-not-respect-non-replaced-exts`:non-replaced-exts`
• Address https://github.com/seancorfield/deps-new/issues/77 by expanding the Writing Templates documentation to clarify the behavior around the root folder, and how to deal with subfolders or files that need different options etc.
• Fix https://github.com/seancorfield/deps-new/issues/75 by removing the unnecessary and incorrect :require directives from bb.tmpl files.
Follow-up in #C019ZQSPYG6