Skip to content

A tool is a tool is a tool

The insight toolnexus is built on: MCP server tools, agent skills, your own functions, remote HTTP endpoints, the built-in shell/file tools, and remote A2A agents are the same thing to an LLM — a named, described, schema’d callable. toolnexus unifies every source behind one Tool interface, emits the schema in OpenAI / Anthropic / Gemini formats, and drives any model with them.

Source What it is Appears as
MCP Servers from mcp.json — local stdio + remote streamable-HTTP source: "mcp"
Agent skills A skills/ folder of SKILL.md files, loaded on demand one skill tool
Native Your own function, registered natively (defineTool / NativeTool) source: "native"
HTTP A remote HTTP endpoint wrapped as a tool source: "http"
Built-ins bash, read, write, edit, grep, glob, and more — on by default source: "builtin"
A2A A remote agent’s skills, fetched from its Agent Card source: "a2a"

Every one produces a Tool with a name, a description, an input schema, and an execute. The adapters render that uniform shape into whatever your model expects.

Deep dives: MCP servers · Agent skills

The unified client ships a built-in tool-calling loop: system prompt, skills injection into the prompt, parallel and chained tool calls, hooks (before/after tool), streaming, retries, conversation memory, and observability metrics. You bring a model endpoint; toolnexus runs the conversation.

toolnexus is not only a consumer of tools — toolkit.serve(addr, …) exposes your toolkit to the outside world as a remote A2A agent: an Agent Card plus JSON-RPC over the same client loop. Your toolkit becomes something another toolnexus (in any of the five languages) can call as a tool.