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

stacklok / toolhive / 30798655671
70%

Build:
DEFAULT BRANCH: main
Ran 03 Aug 2026 08:58AM UTC
Jobs 1
Files 866
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

03 Aug 2026 08:45AM UTC coverage: 69.976% (-0.04%) from 70.019%
30798655671

push

github

web-flow
Authorize and accept call_tool with nested tool_name (#6150)

* Authorize call_tool when tool_name is nested

Authorization read the call_tool target from the top level of the request
arguments only. A caller that nested tool_name inside parameters missed that
lookup and fell through the pass-through branch, reaching the backend with no
policy check performed.

Resolve the target through a shared helper so authorization and dispatch agree
on which tool a request names.

Signed-off-by: Tanguille <91473554+Tanguille@users.noreply.github.com>

* Accept nested tool_name in call_tool input

LLMs frequently nest tool_name inside parameters rather than alongside it.
These calls were rejected with a bare "tool_name is required", which gave the
model no indication of the expected shape, so retries reproduced the same
payload and the turn was lost.

Decode such calls by resolving the target the same way authorization does, and
report the expected shape and the parameter keys received when the name really
is absent. Keys are listed without values so tool arguments stay out of logs.

Fixes #5891

Signed-off-by: Tanguille <91473554+Tanguille@users.noreply.github.com>

* Cover the nested tool_name path in the optimizer e2e

The find->call round-trip only exercised the flat payload, so nothing verified
that a nested tool_name dispatches through a real vMCP server rather than only
through the decode unit tests.

Signed-off-by: Tanguille <91473554+Tanguille@users.noreply.github.com>

---------

Signed-off-by: Tanguille <91473554+Tanguille@users.noreply.github.com>

28 of 30 new or added lines in 2 files covered. (93.33%)

66 existing lines in 3 files now uncovered.

82669 of 118139 relevant lines covered (69.98%)

97.1 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
97.29
-0.69% pkg/vmcp/optimizer/optimizer.go

Coverage Regressions

Lines Coverage ∆ File
59
62.08
-4.9% pkg/workloads/manager.go
5
0.0
-100.0% pkg/workloads/sysproc_unix.go
2
74.14
-0.24% pkg/transport/proxy/streamable/streamable_proxy.go
Jobs
ID Job ID Ran Files Coverage
1 30798655671.1 03 Aug 2026 08:58AM UTC 866
69.98
GitHub Action Run
Source Files on build 30798655671
  • Tree
  • List 866
  • Changed 8
  • Source Changed 2
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30798655671
  • 798f37c1 on github
  • Prev Build on main (#30759707133)
  • Next Build on main (#30805980494)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc