I have a published plugin (@almured/openclaw-plugin v0.1.2) that registers
8 tools via api.registerTool(...) inside register(api). The plugin loads
correctly:
- Gateway log: "ready (6 plugins: ... almured ...)"
openclaw plugins inspect almured --json | jq '.plugin.toolNames'
returns the 8 tool names
But the tools never appear in the agent's function-calling schema:
openclaw agent --message "list tools"returns 17 standard tools, no
almured__* entries- Same in --local mode
- No errors anywhere in gateway logs
From reading the bundled JS (loader-708jrx4Y.js), registerTool writes to
registry.tools but the agent's per-turn tool list seems to be assembled
separately from a tool profile. I can't tell from outside what wires
gateway-registered plugin tools into the agent's schema.
Bundled plugins (tavily, firecrawl, voice-call) clearly do surface tools β
so I'm missing something. Is there an additional registration call, a
profile annotation, an allowlist, or a config flag a third-party plugin
needs to add for its tools to reach the agent?
Plugin source: https://github.com/Almured/almured-openclaw-plugin
ClawHub: @almured/openclaw-plugin