#All Skills that get called end up returning "Tool x not found"

1 messages ยท Page 1 of 1 (latest)

stiff garnet
#

I am running openclaw locally with ollama, using gemma4:e4b model.
Whenever model tries to call any tool, for example Notion skill, it gets a response "Tool notion not found"
Problem cannot be with this integration as even builtin integrations such as weather behave the same.
Only web search does work. How to resolve this issue?

tired zenithBOT
#

This pattern usually means the model is hallucinating tool names, not that Notion/weather are broken. OpenClaw only has the tools exposed in the current session; a skill is instructions for how to use tools, it does not automatically create a tool literally named notion.

Two things to check first:

  1. Please paste your version:
openclaw --version
  1. If you configured Ollama manually, make sure you are using the native Ollama endpoint, not the OpenAI-compatible /v1 endpoint:
models: {
  providers: {
    ollama: {
      api: "ollama",
      baseUrl: "http://127.0.0.1:11434" // no /v1
#
    }
  }
}

Docs: https://docs.openclaw.ai/providers/ollama

If that is already correct, the practical fix is to switch to a stronger/tool-capable model for agent/tool use. Small or heavily quantized local models often output pseudo-tools like notion / weather instead of calling the actual OpenClaw tool schema. Web search working doesnโ€™t disprove this โ€” itโ€™s a simple/common tool name, while skills require the model to follow the loaded instructions and call the real underlying tools.

Useful checks:

openclaw status --all
openclaw models list --provider ollama
openclaw doctor

For security/tool-enabled agents, the docs also recommend larger models: https://docs.openclaw.ai/help/faq-models#can-i-use-self-hosted-models-llamacpp-vllm-ollama

stiff garnet
#
openclaw --version
OpenClaw 2026.5.7 (eeef486)
tired zenithBOT
#

Thanks โ€” 2026.5.7 is new enough, so Iโ€™d focus on config/model behavior rather than an old-version bug.

The likely causes are:

  1. Ollama configured through /v1
    If your provider uses http://127.0.0.1:11434/v1 or api: "openai", tool calling can break exactly like this. It should be native Ollama:
models: {
  providers: {
    ollama: {
      api: "ollama",
      baseUrl: "http://127.0.0.1:11434"
    }
  }
}

Docs: https://docs.openclaw.ai/providers/ollama

#
  1. Tool allowlist/profile only exposing web tools
    Since web search works but everything else โ€œbecomesโ€ Tool x not found, check whether you have tools.profile, tools.allow, tools.byProvider, or per-agent tools.allow restricting the tool surface. Local onboarding may default to tools.profile: "coding", which does not include messaging/integration tools.

Relevant docs: https://docs.openclaw.ai/gateway/config-tools

  1. The model is inventing tool names
    notion and weather are usually not literal tool names. Skills are instructions; the model still has to call the real exposed OpenClaw tools. Smaller/local models often emit pseudo-tools like notion instead of following the actual schema.

Please paste the relevant redacted parts of:

openclaw status --all

and especially any models.providers.ollama, agents.defaults.model, tools.*, or agents.list[].tools config. That should tell us whether itโ€™s endpoint/config vs model capability.

stiff garnet
#

openclaw status --all

๐Ÿฆž OpenClaw 2026.5.7 (eeef486) โ€” iMessage green bubble energy, but for everyone.

โ”‚
OpenClaw status --all

Overview
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Item โ”‚ Value โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Version โ”‚ 2026.5.7 โ”‚
โ”‚ OS โ”‚ linux 6.8.0-106-generic (x64) โ”‚
โ”‚ Node โ”‚ 22.14.0 โ”‚
โ”‚ Config โ”‚ ~/.openclaw/openclaw.json โ”‚

#

โ”‚ Dashboard โ”‚ http://127.0.0.1:18789/ โ”‚
โ”‚ Tailscale exposure โ”‚ off โ”‚
โ”‚ Channel โ”‚ stable (default) โ”‚
โ”‚ Update โ”‚ pnpm ยท up to date ยท npm latest 2026.5.7 โ”‚
โ”‚ Gateway โ”‚ local ยท ws://127.0.0.1:18789 (local loopback) ยท reachable 12ms ยท auth token โ”‚
โ”‚ Security โ”‚ Run: openclaw security audit --deep โ”‚
โ”‚ Gateway self โ”‚ unknown โ”‚

#

โ”‚ Gateway service โ”‚ systemd user installed ยท enabled ยท running (pid 1882, state active) โ”‚
โ”‚ Node service โ”‚ systemd user not installed โ”‚
โ”‚ Agents โ”‚ 1 total ยท 0 bootstrapping ยท 1 active ยท 4 sessions โ”‚
โ”‚ Secrets โ”‚ none โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Channels
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Channel โ”‚ Enabled โ”‚ State โ”‚ Detail โ”‚

tired zenithBOT
#

That output got cut off right before the useful bits ๐Ÿ™‚

Can you paste the sections further down from status --all, especially anything mentioning:

  • Models / active model
  • Tools / tool profile / allowlist
  • warnings
  • config/runtime issues

If youโ€™re comfortable, this is even better because it shows exactly the knobs involved:

cat ~/.openclaw/openclaw.json | sed -n '/models:/,/channels:/p'
cat ~/.openclaw/openclaw.json | sed -n '/tools:/,/agents:/p'
cat ~/.openclaw/openclaw.json | sed -n '/agents:/,/channels:/p'

redact tokens/API keys before posting.

Right now my top suspicion is still either baseUrl accidentally ending in /v1, or a restrictive tools.profile / tools.allow causing only web tools to be available.

stiff garnet
#

โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Telegram โ”‚ ON โ”‚ OK โ”‚ token config (sha256:643a46f1 ยท len 46) ยท accounts 1/1 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Telegram accounts
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Account โ”‚ Status โ”‚ Notes โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ default โ”‚ OK โ”‚ token:config ยท credential available in gateway runtime โ”‚

#

โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Agents
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Agent โ”‚ Bootstrap file โ”‚ Sessions โ”‚ Active โ”‚ Store โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ main โ”‚ ABSENT โ”‚ 4 โ”‚ just now โ”‚ ~/.openclaw/agents/main/sessions/sessions.json โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Diagnosis (read-only)

Gateway connection details:
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/justkowal/.openclaw/openclaw.json
Bind: loopback

#

โœ“ Config: /home/justkowal/.openclaw/openclaw.json
โœ“ Secret diagnostics (0)
โœ“ Restart sentinel: none
! Port 18789
Port 18789 is already in use.

  • pid 1882 justkowal: /home/justkowal/.nvm/versions/node/v22.14.0/bin/node /home/justkowal/.nvm/versions/node/v22.14.0/lib/node_modules/openclaw/dist/index.js gateway --port 18789 (127.0.0.1:18789)
  • Gateway already running locally. Stop it (openclaw gateway stop) or use a different port.
    ! Tailscale exposure: off ยท daemon unknown
    โœ“ Skills: 16 eligible ยท 0 missing ยท /home/justkowal/.openclaw/workspace
    โœ“ Plugin compatibility (none)
    โœ“ Channel issues (none)

Pasteable debug report. Auth tokens redacted.
Troubleshooting: https://docs.openclaw.ai/troubleshooting

โ—‡

tired zenithBOT
#

Still only the overview table โ€” the smoking gun will be lower in the report.

Try this narrower command and paste the output:

openclaw models status
openclaw models list --provider ollama
openclaw config get models.providers.ollama
openclaw config get agents.defaults.model
openclaw config get tools
openclaw config get agents.list

Redact secrets if any appear.

Also: if youโ€™re testing Notion specifically, make sure the Notion skill docs say which underlying tool it expects. A skill named notion does not mean there will be a callable tool named notion; if the model literally calls notion, thatโ€™s usually model/tool-schema failure.

#

No worries โ€” status --all is getting pasted in chunks and Discord is making this painful. The channel section still isnโ€™t the part we need.

Please run these instead; theyโ€™re much shorter:

openclaw models status
openclaw config get models.providers.ollama
openclaw config get tools
openclaw config get agents

If openclaw config get ... says the key doesnโ€™t exist, thatโ€™s useful too.

The specific thing Iโ€™m looking for is whether your Ollama config says baseUrl: ".../v1" or api: "openai" โ€” that would break native Ollama tool calling. If the endpoint is clean, then weโ€™ll check whether tools.profile/tools.allow is narrowing the available tools so the model only sees web search.

#

Yep, this is still just the Telegram/channel section. Letโ€™s avoid the giant status --all paste entirely.

Please run only these and paste the results in one code block:

openclaw models status
openclaw config get models.providers.ollama
openclaw config get tools
openclaw config get agents

What I need to confirm:

  • Ollama must be api: "ollama" with baseUrl: "http://127.0.0.1:11434" โ€” not /v1.
  • tools.profile / tools.allow must not be limiting you to web-only tools.
  • Your active agent model should be the exact provider-prefixed ref, e.g. ollama/gemma4:e4b or whatever openclaw models list --provider ollama shows.

Once we see those four outputs, this should be quick to pin down.

#

That part is okay โ€” the Port 18789 is already in use warning just means the gateway is already running on the expected port. Not the cause.

The useful clue there is: Skills: 16 eligible ยท 0 missing, so OpenClaw can see the skill files. The failure is almost certainly happening at tool-call selection/execution, not skill discovery.

Please run these exact commands instead of more status --all chunks:

openclaw models status
openclaw config get models.providers.ollama
openclaw config get tools
openclaw config get agents

If you want a quick experiment while we wait: switch to a cloud/stronger model for one message and ask it to use the same skill/tool. If it works there, then gemma4:e4b is not reliably following OpenClawโ€™s tool schema. Thatโ€™s common with small local models: they invent calls like notion / weather even though the real exposed tools have different names.

Docs Iโ€™m checking against:
https://docs.openclaw.ai/providers/ollama
https://docs.openclaw.ai/gateway/config-tools

stiff garnet
#

๐Ÿฆž OpenClaw 2026.5.7 (eeef486) โ€” If you can describe it, I can probably automate itโ€”or at least make it funnier.

Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : ollama/gemma4:e4b
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (0) : -
Configured models (1): ollama/gemma4:e4b

Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -

  • ollama effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | ollama:default=marker(ollama-local) | models.json=OL...EY | source=models.json: ~/.openclaw/agents/main/agent/models.json | synthetic=plugin-owned | source=models.providers.ollama (synthetic local key)

OAuth/token status

  • none
tired zenithBOT
#

Good, this confirms the active model is ollama/gemma4:e4b and Ollama auth is being picked up. Nothing obviously wrong there.

Now we need the tool policy/config, because models status doesnโ€™t show it. Please run:

openclaw config get models.providers.ollama
openclaw config get tools
openclaw config get agents

But based on what we have so far: if the error is literally Tool notion not found, that is probably the model calling a tool named notion. OpenClaw doesnโ€™t expose skills as tools with the skill name. A Notion skill normally tells the model how to use some underlying tool/API/MCP/plugin; if the model calls notion, itโ€™s not following the tool schema.

So the likely resolution is one of these:

  1. If your Ollama provider has baseUrl ending in /v1, change it to native Ollama (http://127.0.0.1:11434) and restart.
  2. If tools.profile/tools.allow is restrictive, expose the actual tools the skill needs.
  3. If config is clean, gemma4:e4b is just not reliable enough for OpenClaw tool use. Use a stronger model for tool-enabled sessions, or keep this local model for chat/simple web search only.
#

The โ€œweb search worksโ€ part fits this: web_search is a real simple tool name. notion/weather are pseudo-tool names the model is inventing.

stiff garnet
#

{
"baseUrl": "http://127.0.0.1:11434",
"apiKey": "OPENCLAW_REDACTED",
"api": "ollama",
"models": [
{
"id": "gemma4",
"name": "gemma4",
"api": "ollama",
"reasoning": true,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 128000,
"maxTokens": 8192,
"compat": {
"supportsUsageInStreaming": true
}
},
...
{
"id": "gemma4:e4b",
"name": "gemma4:e4b",
"api": "ollama",
"reasoning": true,
"input": [
"text",
"image"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 8192,
"compat": {
"supportsUsageInStreaming": true,
"supportsTools": true
}
},

tired zenithBOT
#

Great โ€” your Ollama endpoint/config is correct. baseUrl has no /v1, api is ollama, and OpenClaw thinks gemma4:e4b supports tools.

Important nuance: compat.supportsTools: true only means OpenClaw will send tool schemas to the model. It does not guarantee the model will choose valid tool names. If it emits notion or weather, OpenClaw will reject it because those are not necessarily actual callable tool IDs.

Next check the tool surface:

openclaw config get tools
openclaw config get agents

If that looks normal, the fix is probably model-side: gemma4:e4b is not reliably doing OpenClaw tool calling. Try one turn with a stronger model and the same prompt. If it works there, youโ€™ve confirmed it.

Two practical paths:

  1. Use gemma4:e4b for chat/simple search, but use a stronger model for tool-heavy sessions.
  2. Narrow the available tools/skills so the model has fewer schemas to choose from โ€” local models often degrade when the tool list is large.
#

Also for Notion specifically: make sure the skill actually installed/enabled the underlying integration/tool it expects. A skill file is instructions; it doesnโ€™t automatically create a callable notion tool by name.

stiff garnet
#

openclaw config get tools
openclaw config get agents

๐Ÿฆž OpenClaw 2026.5.7 (eeef486) โ€” iMessage green bubble energy, but for everyone.

{
"profile": "coding",
"web": {
"search": {
"enabled": true,
"provider": "ollama"
}
}
}

๐Ÿฆž OpenClaw 2026.5.7 (eeef486) โ€” Deployed locally, trusted globally, debugged eternally.

{
"defaults": {
"model": {
"primary": "ollama/gemma4:e4b"
},
"models": {
"ollama/gemma4:e4b": {}
},
"workspace": "/home/justkowal/.openclaw/workspace",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 8
}
},
"list": [
{
"id": "main",
"tools": {
"alsoAllow": [
"browser",
"canvas",
"message",
"heartbeat_respond",
"gateway",
"nodes",
"agents_list",
"tts",
"dir_fetch",
"dir_list",
"file_fetch",
"file_write"
]
}
}
]
}

tired zenithBOT
#

Aha, this config explains the โ€œonly web search worksโ€ part.

You have:

"tools": {
  "profile": "coding",
  "web": { "search": { "enabled": true, "provider": "ollama" } }
}

coding includes web/search, filesystem/runtime/session/memory basics, but it is not the unrestricted tool surface. Optional/plugin/integration tools are not generally exposed unless you use full or explicitly allow the real tool IDs. Docs: https://docs.openclaw.ai/tools#tool-profiles

Fastest test fix:

openclaw config set tools.profile full
openclaw gateway restart
#

Then start a fresh session/chat and try again.

If you want to keep coding, you need to add the actual callable tool IDs via tools.alsoAllow / agents.list[].tools.alsoAllow. Skill names like notion or weather are not automatically tool IDs; skills are instruction files. So if the model literally calls notion, OpenClaw will say Tool notion not found unless some plugin actually registered a tool with that exact name and itโ€™s allowed.

So likely resolution path:

  1. Set tools.profile: "full" to confirm the tools are exposed.
  2. If it works, tighten later with explicit alsoAllow entries.
  3. If it still calls fake tools like notion/weather, then gemma4:e4b is hallucinating tool names despite supportsTools: true; use a stronger model for tool-heavy tasks or reduce the skills/tool surface.
stiff garnet
#

Sat 9 May - 18:09 ๎‚ฐ ~ ๎‚ฐ
@stiff garnet ๎‚ฐ openclaw config get tools
openclaw config get agents

๐Ÿฆž OpenClaw 2026.5.7 (eeef486) โ€” Gateway onlineโ€”please keep hands, feet, and appendages inside the shell at all times.

{
"profile": "full",
"web": {
"search": {
"enabled": true,
"provider": "ollama"
}
}
}

๐Ÿฆž OpenClaw 2026.5.7 (eeef486) โ€” No $999 stand required.

{
"defaults": {
"model": {
"primary": "ollama/gemma4:e4b"
},
"models": {
"ollama/gemma4:e4b": {}
},
"workspace": "/home/justkowal/.openclaw/workspace",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 8
}
},
"list": [
{
"id": "main",
"tools": {
"alsoAllow": [
"browser",
"canvas",
"message",
"heartbeat_respond",
"gateway",
"nodes",
"agents_list",
"tts",
"dir_fetch",
"dir_list",
"file_fetch",
"file_write"
]
}
}
]
}

#

still notion nor weather didnt appear

tired zenithBOT
#

Thatโ€™s expected โ€” and itโ€™s the key misunderstanding here.

weather and notion are skills, not necessarily tools. They will not show up in the tool list as callable tools unless a plugin/MCP integration registers an actual tool with that exact ID.

For example, the bundled weather skill does not create a weather tool. It teaches the model to use exec/curl against wttr.in. So the correct flow is roughly:

  1. model sees the weather skill
  2. model reads/follows the skill instructions
  3. model calls exec with curl "wttr.in/..."

If the model instead calls a tool literally named weather, OpenClaw correctly says Tool weather not found.

Check skill visibility with:

openclaw skills list --eligible
openclaw skills info weather
#
openclaw skills info notion

If theyโ€™re eligible, your config is now basically fine. The remaining issue is model behavior: gemma4:e4b is seeing skill names and treating them as tool names. Thatโ€™s a local-model tool-following failure, not an integration failure.

Try this exact prompt in a fresh session:

Use the weather skill. Do not call a tool named weather. Read/follow the skill instructions and use the actual available tool it requires.

If it still calls weather, switch the tool-heavy agent to a stronger model. You can keep Gemma for normal chat/search, but skills that require following instructions + choosing the underlying tool usually need a more reliable tool-calling model.

Docs: https://docs.openclaw.ai/tools/skills

stiff garnet
#

openclaw skills list --eligible
openclaw skills info weather

๐Ÿฆž OpenClaw 2026.5.7 (eeef486) โ€” Say "stop" and I'll stopโ€”say "ship" and we'll both learn a lesson.

Skills (16/16 ready)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Status โ”‚ Skill โ”‚ Description โ”‚ Source โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โœ“ ready โ”‚ ๐Ÿ“ฐ blogwatcher โ”‚ Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ ๐Ÿ“ฆ browser-automation โ”‚ Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts. โ”‚ openclaw-extra โ”‚
โ”‚ โœ“ ready โ”‚ ๐Ÿ“ธ camsnap โ”‚ Capture frames or clips from RTSP/ONVIF cameras. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ ๐Ÿ“ฆ gh-issues โ”‚ Fetch GitHub issues, delegate fixes to subagents, open PRs, watch reviews, or run /gh-issues workflows. โ”‚ openclaw-bundled โ”‚

#

โ”‚ โœ“ ready โ”‚ ๐Ÿ™ github โ”‚ Use gh for GitHub issues, PR status, CI/logs, comments, reviews, releases, and API queries. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ ๐ŸŽฎ gog โ”‚ Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ ๐Ÿ“ฆ healthcheck โ”‚ Audit and harden hosts running OpenClaw for SSH, firewall, updates, exposure, cron checks, and risk posture. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ ๐Ÿ“ง himalaya โ”‚ Use himalaya to list, read, search, compose, reply, forward, and organize IMAP/SMTP email. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ ๐Ÿ“ฆ node-connect โ”‚ Diagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures. โ”‚ openclaw-bundled โ”‚

#

โ”‚ โœ“ ready โ”‚ ๐Ÿ“ notion โ”‚ Notion API for creating and managing pages, databases, and blocks. โ”‚ openclaw-workspace โ”‚
โ”‚ โœ“ ready โ”‚ ๐Ÿ“ฆ skill-creator โ”‚ Create, edit, improve, tidy, review, audit, or restructure AgentSkills and SKILL.md files. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ ๐Ÿช taskflow โ”‚ Coordinate multi-step detached tasks as one durable TaskFlow job with owner context, state, waits, and child tasks. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ ๐Ÿ“ฅ taskflow-inbox-triage โ”‚ Example TaskFlow pattern for inbox triage, intent routing, waiting on replies, and later summaries. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ ๐Ÿงต tmux โ”‚ Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ ๐ŸŽฌ video-frames โ”‚ Extract frames or short clips from videos using ffmpeg. โ”‚ openclaw-bundled โ”‚
โ”‚ โœ“ ready โ”‚ โ˜” weather โ”‚ Get current weather, rain, temperature, and forecasts for locations or travel planning. โ”‚ openclaw-bundled โ”‚

#

๐Ÿฆž OpenClaw 2026.5.7 (eeef486) โ€” I've seen your commit messages. We'll work on that together.

โ˜” weather โœ“ Ready

Get current weather, rain, temperature, and forecasts for locations or travel planning.

Details:
Source: openclaw-bundled
Path: ~/.nvm/versions/node/v22.14.0/lib/node_modules/openclaw/skills/weather/SKILL.md
Homepage: https://wttr.in/:help
Visible to model: yes
Available as command: yes

Requirements:
Binaries: โœ“ curl

Tip: use openclaw skills search, openclaw skills install, and openclaw skills update for ClawHub-backed skills.

tired zenithBOT
#

That confirms the skill is eligible, not missing. So the fix is not โ€œinstall weatherโ€ โ€” itโ€™s getting the model to use the skill correctly.

For weather, there is no weather tool. The bundled weather skillโ€™s instructions say to run curl via exec, e.g. curl "wttr.in/London?format=3". So if the model calls weather, itโ€™s doing the wrong thing.

Try a fresh session with this exact prompt:

What is the weather in London? Use the weather skill. Do not call a tool named weather; read/follow the weather SKILL.md and use exec/curl as instructed.

If it still returns Tool weather not found, thatโ€™s a strong confirmation that gemma4:e4b is not reliable enough for skills/tool use in this setup.

You can also test whether the underlying tool surface is fine by asking:

Run this command with exec: curl -s "wttr.in/London?format=3"

Expected outcomes:

#
  • If exec works โ†’ OpenClaw tools are exposed correctly; Gemma is misusing the skill name as a tool name.
  • If exec does not work โ†’ tool policy/sandbox issue remains.

For Notion: same concept, but it depends on the Notion skill you installed. Run:

openclaw skills info notion

Look for what it actually expects underneath: MCP tool, browser, exec CLI, API script, etc. Unless a plugin registers a literal notion tool, Tool notion not found is expected when the model calls notion directly.

Practical recommendation: use a stronger cloud model for tool-heavy/skill-heavy sessions, or keep Gemma for simple chat/search and give very explicit prompts for skills. Local models can technically advertise tool support but still fail at schema-following. ๐Ÿฆž

#

Yep โ€” that list actually reinforces the same thing: those are skills, not callable tool IDs.

Examples from your list:

  • github skill โ†’ uses the gh CLI, usually through exec
  • gog skill โ†’ uses the Google Workspace CLI, usually through exec
  • himalaya skill โ†’ uses the himalaya CLI, usually through exec
  • weather skill โ†’ uses curl, usually through exec

So the model should not call tools named github, gog, himalaya, or weather. It should read/follow the skill instructions and call the actual available OpenClaw tool, most often exec.

Quick proof test:

Use exec to run: curl -s "wttr.in/London?format=3"

If that works, OpenClaw tools are fine. Your local model is treating skill names as tool names.

#

For gemma4:e4b, Iโ€™d try either:

Use the weather skill, but do not call a tool named weather. The skill requires shell commands; call exec with curl.

or switch tool-heavy sessions to a stronger model. This is exactly the kind of failure smaller/local models hit: supportsTools: true means OpenClaw can send tool schemas, not that the model reliably follows skill instructions.

#

Yep, notion being โœ“ ready means the skill instructions are available. It still doesnโ€™t mean there is a callable tool named notion.

The important distinction:

  • Skill name: notion, weather, github, etc.
  • Actual callable OpenClaw tools: exec, browser, web_fetch, message, etc.

Most bundled skills are โ€œhow-to guidesโ€ for the model. For example weather says โ€œuse curlโ€, so the model should call exec, not weather.

For your workspace Notion skill, inspect what it tells the model to use:

openclaw skills info notion --json

or open the SKILL.md shown by that command. Look for whether it says to use an MCP tool, exec, browser, an API script, etc.

If the model literally calls notion, thatโ€™s the bug: gemma4:e4b is confusing skill names with tool names. Try asking:

#
Use the notion skill. Do not call a tool named notion. First follow the notion SKILL.md instructions and call only the actual available OpenClaw tool it specifies.

If it still does Tool notion not found, switch this agent to a stronger tool-calling model. Your OpenClaw config looks basically correct now; this is model compliance, not skill discovery.

#

That output is good: it proves the weather skill is loaded and visible.

But Available as command: yes still does not mean โ€œthere is a tool called weatherโ€. It means the skill can be invoked as a user slash command, e.g. /weather ..., so OpenClaw can bias/load that skill for the turn.

The weather skillโ€™s actual instructions are shell-based. It requires curl, and the model should call exec with something like:

curl -s "wttr.in/London?format=3"

So there are two separate tests:

  1. Direct command route:
/weather London
  1. Tool route:
#
Use exec to run: curl -s "wttr.in/London?format=3"

If #2 works but asking โ€œwhatโ€™s the weather?โ€ causes Tool weather not found, then OpenClaw is configured fine and gemma4:e4b is misinterpreting skill names as tool names.

For a skill to directly dispatch to a tool, its SKILL.md would need frontmatter like command-dispatch: tool plus command-tool: <actual_tool_name>. The bundled weather skill does not do that; itโ€™s a model-instruction skill.

stiff garnet
#

any way to modify the "system prompt" or similar to force the model to use the SKILL.md instead of tool calling directly?

tired zenithBOT
#

Yes โ€” the best place is the workspace AGENTS.md, not a full system-prompt override.

Add something like this to:

~/.openclaw/workspace/AGENTS.md
## Skill/tool discipline for local models

Skills are not tools. Never call a tool whose name is only a skill name, such as `weather`, `notion`, `github`, `gog`, or `himalaya`, unless that exact tool appears in the available tools list.

When a request matches a skill:
1. Treat the skill name as instructions, not as a callable tool.
2. Read or follow the skillโ€™s `SKILL.md` instructions first.
3. Call only real OpenClaw tools from the available tools list, such as `exec`, `browser`, `web_fetch`, `message`, etc.
#

For the weather skill specifically: use `exec` with `curl` as described in the weather SKILL.md. Do not call a tool named `weather`.

Then restart or start a fresh session:

openclaw gateway restart

Docs: AGENTS.md is loaded into the system prompt as operating instructions: https://docs.openclaw.ai/concepts/agent-workspace

I would not use agents.defaults.systemPromptOverride unless youโ€™re doing controlled prompt experiments, because it replaces the whole OpenClaw-assembled prompt and can accidentally remove important tool/skill guidance. Docs: https://docs.openclaw.ai/gateway/config-agents#agentsdefaultssystempromptoverride

One more useful knob for local models: reduce the skill list so Gemma has fewer names to confuse as tools:

#
agents: {
  defaults: {
    skills: ["weather", "notion"]
  }
}

Or per-agent:

agents: {
  list: [
    { id: "main", skills: ["weather", "notion"] }
  ]
}

That wonโ€™t force correctness, but with small/local models it often helps a lot.

stiff garnet
#

still tried to use weather as a tool

tired zenithBOT
#

Then Iโ€™d stop trying to prompt-patch this model. If it still calls weather after explicit AGENTS.md instructions, gemma4:e4b is failing the tool/skill discipline step.

There are only three realistic fixes:

  1. Use a stronger tool-calling model for skill/tool sessions
    This is the recommended fix. supportsTools: true means the transport accepts tool schemas; it doesnโ€™t mean the model reliably follows them. Your model is treating skill names as callable tools.

  2. Donโ€™t rely on model-invoked skills with this model
    Use direct commands/prompts instead, e.g.:

Use exec to run: curl -s "wttr.in/London?format=3"

If that works, OpenClaw is fine; the model is the weak link.

  1. Create real tools/wrappers for the names it insists on calling
    For example, a plugin/MCP tool actually named weather or notion. Skills alone wonโ€™t do that. Skills are instructions; plugins/MCP register tools.
#

For Notion specifically, if you want the model to call a Notion API tool, you need an actual Notion MCP/plugin/tool exposed and allowed. A workspace notion skill only tells the model how to use something; it does not create a notion tool.

So the short version: your config now looks okay. The behavior left is model non-compliance. Iโ€™d switch this agentโ€™s primary model for tool-heavy work, and ask in #old-models for current local-model/tool-calling recommendations.

stiff garnet
#

no bigger model will fit efficiently into RX6700 XT

tired zenithBOT
#

Yeah, that constraint is real. On an RX 6700 XT, โ€œjust use a bigger modelโ€ may not be practical.

In that case Iโ€™d avoid model-invoked skills for this workflow and use one of these patterns instead:

  1. Use slash-command style skill invocation where possible
    Try:
/weather London

This may route the skill more directly than asking the model โ€œwhatโ€™s the weather?โ€. If the model still has to reason through it, though, it may still fail.

  1. Make tiny wrapper scripts and call exec explicitly
    For weather, donโ€™t ask it to use the weather skill. Ask:
Use exec to run: curl -s "wttr.in/London?format=3"

For Notion, create a small CLI/script like notion-create-page or notion-search, then prompt Gemma to call exec with that exact command. Local models often handle โ€œrun this exact shell commandโ€ better than โ€œchoose the right skill/tool abstractionโ€.

#
  1. Turn the integrations into real tools
    If you want the model to call notion, there must be an actual plugin/MCP tool named notion exposed to OpenClaw. A skill alone wonโ€™t create that. Skills are instructions; plugins/MCP register callable tools.

  2. Reduce ambiguity hard
    Limit visible skills to only the one youโ€™re testing, and keep AGENTS.md strict. It may still fail, but fewer skill names means fewer fake tool names for the model to invent:

agents: {
  defaults: {
    skills: ["weather"]
  }
}

Then fresh session.

My honest read: with this model, the most reliable local setup is โ€œexplicit command execution / wrapper scriptsโ€, not general skill orchestration. For current local-model picks that fit your GPU, ask in #old-models โ€” people there will have fresher hands-on recs than I should pretend to know. Docs: https://docs.openclaw.ai/concepts/models#model-discussions-community-notes