@sisu-ai/mw-register-tools
v10.0.0
Published
Register tool sets once and make them consistently available across your middleware pipeline.
Downloads
364
Maintainers
Readme
@sisu-ai/mw-register-tools
Register tool sets once and make them consistently available across your middleware pipeline.
Setup
npm i @sisu-ai/mw-register-toolsExports
registerTools(tools: Tool[], options?: RegisterToolsOptions)— callsctx.tools.register(tool)for each item and optionally configures tool aliases.
What It Does
- Registers one or more tools into
ctx.toolsfor the current run. - Optionally configures tool aliases for ecosystem compatibility.
- Emits a debug log per tool (name + description) to aid troubleshooting.
Tools become available to middlewares that surface them to providers (e.g., @sisu-ai/mw-tool-calling) or to custom loops (ReAct, planners).
How It Works
- On each request, iterates the provided array and calls
ctx.tools.register(tool). - The default registry is in‑memory per context (
SimpleTools), so registration is per run. - If a tool with the same name already exists, the last registration wins (overwrites).
Usage
Basic Registration
import { registerTools } from "@sisu-ai/mw-register-tools";
const app = new Agent().use(registerTools([myTool]));Tool Aliases for Ecosystem Compatibility
You can register tools with aliases to make them compatible with ecosystem-standard tool names. This is useful when integrating with skills or frameworks that expect specific tool names (e.g., Cline skills, MCP tools).
import { registerTools } from "@sisu-ai/mw-register-tools";
import { createTerminalTool } from "@sisu-ai/tool-terminal";
const terminal = createTerminalTool({
roots: [process.cwd()],
capabilities: { read: true, write: false, delete: false, exec: true },
});
const app = new Agent().use(
registerTools(terminal.tools, {
aliases: {
terminalRun: "bash",
terminalReadFile: "read_file",
terminalCd: "cd",
},
}),
);How It Works:
- Tools are registered in
ctx.toolswith their canonical SISU names (e.g.,terminalRun) - Alias mappings are stored in
ctx.state.toolAliases - The
tool-callingmiddleware renames tools before sending to the LLM API (e.g., model seesbash) - When the model calls a tool using an alias, SISU resolves it back to the canonical name
- Tool handlers execute using the original canonical name from the registry
When to Use Aliases:
- ✅ Integrating with skills that expect specific tool names (e.g., Cline skills)
- ✅ Following ecosystem conventions (e.g.,
bash,read_file,write_file) - ✅ Making tools compatible with external agent frameworks
- ❌ Default use cases (SISU names work fine without aliases)
Important Notes:
- Aliases are completely optional - tools work without them
- Aliases are only used for API communication; internally, canonical names are always used
- You can partially alias tools (some aliased, some not)
- Invalid aliases (referencing non-existent tools) generate warnings but don't fail
Placement & Ordering
- Place early in the stack, before tool‑calling or planner middleware that needs access to tools.
- Safe to combine with logging/tracing; tool registration logs at debug level by default.
Notes & Gotchas
- Naming: keep tool names simple (lower‑case letters/numbers/._-) and consistent with prompts.
- Schemas: for providers like OpenAI, zod shapes are converted to JSON Schema under the hood; keep them precise for better tool selection.
- Overwrites: registering two tools with the same
nameoverwrites the first. - Scope: registration is per request/context. If you need global tools, construct them once and pass the same instances in each request.
Community & Support
Discover what you can do through examples or documentation. Check it out at https://github.com/finger-gun/sisu. Example projects live under examples/ in the repo.
Documentation
Core — Package docs · Error types
Adapters — OpenAI · Anthropic · Ollama
- @sisu-ai/mw-agent-run-api
- @sisu-ai/mw-context-compressor
- @sisu-ai/mw-control-flow
- @sisu-ai/mw-conversation-buffer
- @sisu-ai/mw-cors
- @sisu-ai/mw-error-boundary
- @sisu-ai/mw-guardrails
- @sisu-ai/mw-invariants
- @sisu-ai/mw-orchestration
- @sisu-ai/mw-rag
- @sisu-ai/mw-react-parser
- @sisu-ai/mw-register-tools
- @sisu-ai/mw-tool-calling
- @sisu-ai/mw-trace-viewer
- @sisu-ai/mw-usage-tracker
- @sisu-ai/tool-aws-s3
- @sisu-ai/tool-azure-blob
- @sisu-ai/tool-extract-urls
- @sisu-ai/tool-github-projects
- @sisu-ai/tool-rag
- @sisu-ai/tool-summarize-text
- @sisu-ai/tool-terminal
- @sisu-ai/tool-web-fetch
- @sisu-ai/tool-web-search-duckduckgo
- @sisu-ai/tool-web-search-google
- @sisu-ai/tool-web-search-openai
- @sisu-ai/tool-wikipedia
Anthropic — hello · control-flow · stream · weather
Ollama — hello · stream · vision · weather · web-search
OpenAI — hello · weather · stream · vision · reasoning · react · control-flow · branch · parallel · graph · orchestration · orchestration-adaptive · guardrails · error-handling · rag-chroma · web-search · web-fetch · wikipedia · terminal · github-projects · server · aws-s3 · azure-blob
Contributing
We build Sisu in the open. Contributions welcome.
Contributing Guide · Report a Bug · Request a Feature · Code of Conduct
Star on GitHub if Sisu helps you build better agents.
Quiet, determined, relentlessly useful.
