30.0 / 30
What changed in the harness
Selection accuracy 100→100, token cost up 2%, unconfirmed writes 100%→100%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
29.5 / 30
03Economics
19.9 / 20
04Discoverability
17.7 / 20
Highest-impact fix
Estimated gain +2 pointsMake target tools discoverable on the first call
Clarify tool names, decision boundaries, and required argument schemas so an agent can choose and construct the target call without exploratory steps.
Description evidence
Defects and rewrites.
1 defect found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
web_url_read |
params_unexplained |
Fetches a URL and returns readable content as markdown. The required `url` parameter is the absolute web URL to fetch, including the scheme (e.g., 'https://example.com/page'); page-relative paths are not valid. Content-type aware: HTML is converted to markdown; JSON is pretty-printed; plain text, YAML, TOML, and XML are returned as fenced readable text. PDF text extraction is supported with bounded input, output, page count, time, concurrency, and memory; OCR is not supported. Binary, media, archive, and octet-stream downloads other than PDFs are intentionally rejected instead of being returned as raw bytes. When the operator configures browser solvers, mcp-searxng attempts FlareSolverr first and then Byparr only after a busy or transient-unavailable acquisition; cache hits bypass acquisition and a final busy or unavailable provider uses one uncached direct-fetch fallback. Three modes: (1) Full content — omit filtering params; use `startChar`/`maxLength` to paginate large pages. (2) Section extraction — set `section` to return content under a specific heading. (3) Headings only — set `readHeadings: true` to list all headings (mutually exclusive with other filtering params). Returns an error string if the URL is unreachable or content cannot be extracted. Use after `searxng_web_search` to read the full content of individual result URLs. |
Selection evidence
Confusable tool pairs.
1 pair where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
searxng_web_search |
searxng_search_suggestions |
medium | Both are query-based SearXNG tools sharing a `query` parameter, and their names differ only by 'suggestions', so a natural task like 'suggest good search terms for X', 'what should I search for', or 'give me related searches' could drive the agent to the primary web_search tool instead of the autocomplete tool, especially when the user says 'search' while actually wanting suggestions. |
Compare the field