• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 24191725472

09 Apr 2026 01:04PM UTC coverage: 65.058% (+0.05%) from 65.01%
24191725472

push

github

web-flow
Coerce types for non-advertised backend tools in composite workflows (#4671)

When backend tools are excluded from advertising via `excludeAll` or
`filter`, the workflow engine could not find their `InputSchema` for
argument type coercion. This caused string arguments (e.g. "42") to be
forwarded to the backend as-is instead of being coerced to the correct
type (e.g. float64(42)), resulting in backend rejection.

Root cause: `ProcessPreQueriedCapabilities` only returned the advertised
tool list. Sessions stored only those tools, and the workflow engine
used `sess.Tools()` for schema lookup — so hidden tools were invisible
to it.

Fix:
- `ProcessPreQueriedCapabilities` now returns both `advertisedTools`
  (filtered, for MCP clients) and `allResolvedTools` (every resolved
  tool regardless of filter, for internal schema lookup).
- `MultiSession` gains `AllTools() []vmcp.Tool`, backed by the new
  `allTools` field on `defaultMultiSession`.
- The per-session workflow engine is built from `sess.AllTools()` so it
  can coerce arguments for any backend tool, whether advertised or not.

Fixes #4287

Co-authored-by: taskbot <taskbot@users.noreply.github.com>

44 of 51 new or added lines in 6 files covered. (86.27%)

11 existing lines in 5 files now uncovered.

55706 of 85625 relevant lines covered (65.06%)

62.63 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

79.38
/pkg/transport/proxy/httpsse/http_proxy.go


Source Not Available

STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc