- web-search: real SearXNG /search?format=json query, top-5 formatted
results (was a 'not configured' stub)
- web-fetch: fetch page, strip scripts/styles/tags, truncate to 4000
runes for the LLM context
- http: generic request tool (GET/POST/PUT/DELETE/PATCH) with scheme
and method validation, status + truncated body
- file: sandboxed read/write/list inside the data directory with path
escape rejection; split into file_read/file_write/file_list
- all tool schemas converted to proper JSON Schema; httptest/tempdir
tests for each plugin