| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <title>ToolTree: Efficient LLM Agent Tool Planning via Dual-Feedback Monte Carlo Tree Search and Bidirectional Pruning</title> |
| <meta name="description" content="ToolTree plans LLM agent tool use via dual-feedback Monte Carlo tree search with bidirectional pruning — state-of-the-art across 4 benchmarks with an average gain of ~10% over existing methods."> |
| <link rel="icon" href="data:,"> |
| <link rel="stylesheet" href="static/style.css"> |
| <script>document.documentElement.classList.add('js');</script> |
| </head> |
| <body> |
|
|
| |
| <nav class="topnav" id="topnav" aria-label="Page sections"> |
| <div class="topnav-inner"> |
| <a class="topnav-brand" href="#top">ToolTree</a> |
| <div class="topnav-links"> |
| <a href="#overview">Overview</a> |
| <a href="#efficiency">Efficiency</a> |
| <a href="#method">Method</a> |
| <a href="#case-study">Case Study</a> |
| <a href="#results">Results</a> |
| <a href="#ablation">Ablation</a> |
| <a href="demo.html">Demo</a> |
| <a href="#bibtex">BibTeX</a> |
| </div> |
| </div> |
| </nav> |
|
|
| |
| <header class="hero" id="top"> |
| <div class="container"> |
| <h1><span class="hero-name">ToolTree</span>: Efficient LLM Agent Tool Planning via Dual-Feedback Monte Carlo Tree Search and Bidirectional Pruning</h1> |
| <p class="authors"> |
| Shuo Yang, Caren Han, Yihao Ding, Shuhe Wang, Eduard Hovy |
| </p> |
| <p class="affiliation">The University of Melbourne · The University of Western Australia</p> |
| <p class="venue"><span class="venue-chip">ICLR 2026</span></p> |
| <nav class="button-row" aria-label="Paper links"> |
| <a class="btn" href="https://openreview.net/forum?id=Ef5O9gNNLE" target="_blank" rel="noopener"><svg class="btn-ico" viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>Paper</a> |
| <a class="btn" href="https://arxiv.org/abs/2603.12740" target="_blank" rel="noopener"><svg class="btn-ico" viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>arXiv</a> |
| <a class="btn" href="https://github.com/SYang2000/ICLR_2026_ToolTree" target="_blank" rel="noopener"><svg class="btn-ico" viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>Code</a> |
| <a class="btn" href="demo.html"><svg class="btn-ico" viewBox="0 0 24 24" aria-hidden="true" fill="currentColor" stroke="none"><polygon points="7 4 20 12 7 20 7 4"/></svg>Demo</a> |
| <a class="btn btn-ghost" href="#bibtex"><svg class="btn-ico" viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>BibTeX</a> |
| </nav> |
| </div> |
| </header> |
|
|
| <main> |
|
|
| |
| <section class="metrics"> |
| <div class="container"> |
| <div class="metric-grid reveal stagger"> |
| <div class="metric-card"> |
| <div class="metric-value">~10%</div> |
| <div class="metric-label">Average gain over existing methods</div> |
| <div class="metric-sub">Across both closed-set and open-set tool planning scenarios</div> |
| </div> |
| <div class="metric-card"> |
| <div class="metric-value">4 / 4</div> |
| <div class="metric-label">State-of-the-art on all four benchmarks</div> |
| <div class="metric-sub">GTA · m&m · ToolBench · RestBench</div> |
| </div> |
| <div class="metric-card"> |
| <div class="metric-value">#1</div> |
| <div class="metric-label">Highest efficiency (performance gain per second)</div> |
| <div class="metric-sub">Compared with all baselines across step limits</div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="overview"> |
| <div class="container"> |
| <h2>Overview</h2> |
| <div class="abstract-card reveal"> |
| <p class="abstract-text"> |
| <strong>ToolTree</strong> is a novel Monte Carlo tree search-inspired planning paradigm for |
| LLM agent tool planning. It explores possible tool usage trajectories using a |
| <strong>dual-stage LLM evaluation</strong> and <strong>bidirectional pruning</strong> mechanism |
| that enables the agent to make informed, adaptive decisions over extended tool-use sequences |
| while pruning less promising branches before and after the tool execution. |
| </p> |
| </div> |
|
|
| <figure class="paper-figure reveal"> |
| <img src="static/paper/comparison.png" alt="Concept comparison on a street photo asking how many wheels are in total: greedy-based planning commits to a single tool chain and answers incorrectly; search-based planning explores more tool branches but still returns a wrong count; ToolTree prunes branches before (pre-pruning) and after (post-pruning) execution and answers correctly."> |
| <figcaption>Comparison of ToolTree with greedy search and search-based tool planning. ToolTree chooses |
| the optimal tool trajectory and answers correctly with bidirectional pruning.</figcaption> |
| </figure> |
| </div> |
| </section> |
|
|
| |
| <section class="fig3-band section-alt" id="efficiency" aria-label="Progressive efficiency analysis"> |
| <div class="container"> |
| <h2>Efficiency</h2> |
| <figure class="paper-figure reveal"> |
| <img src="static/paper/efficiency.png" alt="Three line charts across step limits comparing ReAct, Best-first, ToT, LATS, and ToolTree: performance versus step limit, running time versus step limit, and efficiency (performance gain per second) versus step limit — ToolTree sits highest on the performance and efficiency panels at every step limit."> |
| <figcaption><span class="fig-tag">Figure 3:</span> Progressive efficiency analysis across step limits. |
| ToolTree achieves the highest efficiency (performance gain per second) compared with all baselines.</figcaption> |
| </figure> |
| </div> |
| </section> |
|
|
| |
| <section id="method"> |
| <div class="container"> |
| <h2>Method</h2> |
| <figure class="paper-figure reveal"> |
| <img src="static/paper/architecture.png" alt="ToolTree pipeline: an input query enters a repeated loop over the tool tree — selection, pre-evaluation of a candidate tool against a threshold before execution, expansion, execution, post-evaluation of the observed output, and backward-propagation — after which the answer predictor produces the final answer."> |
| <figcaption>Architecture overview of ToolTree. An input query is processed sequentially via iterative |
| dual evaluation-guided Monte Carlo Tree Search, including selection, pre-evaluation, expansion, |
| execution, post-evaluation and backward-propagation.</figcaption> |
| </figure> |
|
|
| <figure class="paper-figure reveal"> |
| <a href="static/paper/case3_tree.svg" target="_blank" rel="noopener"><img src="static/paper/case3_tree.svg" width="1680" height="1500" alt="Search tree reconstructed from a logged 11-rollout run: from the user query on the left, candidate tool calls branch rightward with pre- and post-evaluation score badges; pre-pruned drafts are dashed with a cross, a failed call is post-pruned in red, duplicate drafts are shown as skipped, and the bold path leads to the final answer bar."></a> |
| <figcaption>Search over tool-call trajectories on a real logged run (11 rollouts): each node is a |
| candidate tool call with its pre-/post-evaluation scores, pruned and duplicate drafts are shown |
| as encountered, and the highest-reward trajectory (bold) is selected as the final plan. |
| Click to view full size.</figcaption> |
| </figure> |
|
|
| <div class="mech-grid mech-grid-4 reveal stagger"> |
| <div class="mech-card"> |
| <span class="mech-num">1</span> |
| <h3>Pre-Evaluation</h3> |
| <p> |
| A fast predictive signal that estimates the utility of a tool <em>before</em> execution, |
| filtering schema- or slot-incompatible calls before expansion. |
| </p> |
| </div> |
| <div class="mech-card"> |
| <span class="mech-num">2</span> |
| <h3>Post-Evaluation</h3> |
| <p> |
| Assesses the actual contribution of a tool <em>after</em> execution based on observed |
| outcomes, pruning unproductive branches using real feedback. |
| </p> |
| </div> |
| <div class="mech-card"> |
| <span class="mech-num">3</span> |
| <h3>Bidirectional Pruning</h3> |
| <p> |
| Combines pre- and post-evaluation to eliminate unpromising branches, concentrating |
| computational budget on promising tool chains. |
| </p> |
| </div> |
| <div class="mech-card"> |
| <span class="mech-num">4</span> |
| <h3>Answer Predictor</h3> |
| <p> |
| Incorporates the tool trajectories with the highest reward found by the MCTS to produce |
| the final prediction. |
| </p> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="case-study" class="section-alt"> |
| <div class="container"> |
| <h2>Case Study</h2> |
| <span class="band-label">Qualitative case studies from the paper</span> |
| <figure class="paper-figure reveal"> |
| <div class="figure-stack"> |
| <img src="static/paper/case_study_medical.png" alt="Case study (a): a radiology image question about lung cancer risk — greedy search relies on generic image captioning and heuristic search on shallow heuristics, both missing the finding, while the MCTS-planned trajectory orchestrates domain-specific imaging tools and detects the risk."> |
| <img src="static/paper/case_study_reasoning.png" alt="Case study (b): a multi-hop knowledge reasoning question about the building seen behind an amusement area — greedy search and heuristic search answer from broad scene cues and the most prominent text, while the MCTS-planned trajectory chains recognition and search tools to identify the building correctly."> |
| </div> |
| <figcaption>Two qualitative case studies showcasing ToolTree’s iterative tool orchestration on |
| (a) a radiology image question and (b) a multi-hop knowledge reasoning task.</figcaption> |
| </figure> |
| </div> |
| </section> |
|
|
| |
| <section id="results"> |
| <div class="container"> |
| <h2>Results</h2> |
| <p> |
| ToolTree achieves state-of-the-art performance across 4 benchmarks spanning both closed-set and |
| open-set tool planning scenarios, with an average gain of ~10% over existing methods. |
| </p> |
|
|
| <div class="table-wrap reveal"> |
| <table class="results"> |
| <thead> |
| <tr><th>Benchmark</th><th>Setting</th><th>Tasks & Tools</th><th>Official source</th></tr> |
| </thead> |
| <tbody> |
| <tr><td>GTA</td><td>Closed-set</td><td>229 real-world tasks, 14 executable tools</td><td><a href="https://github.com/open-compass/GTA" target="_blank" rel="noopener">open-compass/GTA</a> · <a href="https://huggingface.co/datasets/Jize1/GTA" target="_blank" rel="noopener">HF dataset</a></td></tr> |
| <tr><td>m&m</td><td>Closed-set</td><td>882 human-verified multi-step multimodal tasks, 33 tools</td><td><a href="https://github.com/RAIVNLab/mnms" target="_blank" rel="noopener">RAIVNLab/mnms</a> · <a href="https://huggingface.co/datasets/zixianma/mnms" target="_blank" rel="noopener">HF dataset</a></td></tr> |
| <tr><td>ToolBench</td><td>Open-set</td><td>16,464 real-world REST APIs (RapidAPI)</td><td><a href="https://github.com/OpenBMB/ToolBench" target="_blank" rel="noopener">OpenBMB/ToolBench</a></td></tr> |
| <tr><td>RestBench</td><td>Open-set</td><td>TMDB & Spotify REST scenarios</td><td><a href="https://github.com/Yifan-Song793/RestGPT" target="_blank" rel="noopener">Yifan-Song793/RestGPT</a></td></tr> |
| </tbody> |
| </table> |
| </div> |
|
|
| <p class="table-note reveal"> |
| This repository ships no benchmark data; each benchmark is downloaded from its official source. |
| </p> |
|
|
| </div> |
| </section> |
|
|
| |
| <section id="ablation" class="section-alt"> |
| <div class="container"> |
| <h2>Pruning Ablation</h2> |
|
|
| <div class="ablation-block reveal"> |
| <figure class="paper-figure figure-medium"> |
| <img src="static/paper/ablation_pruning.png" alt="Two box plots comparing ToolTree against variants without pre-pruning, without post-pruning, and without both: the number of rollouts and the number of expanded nodes are lowest for full ToolTree and grow as pruning stages are disabled."> |
| </figure> |
| <p class="takeaway">Disabling pre-pruning, post-pruning, or both consistently increases the number of |
| rollouts and expanded nodes, confirming that bidirectional pruning concentrates the computational |
| budget on promising tool chains.</p> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="bibtex"> |
| <div class="container"> |
| <h2>BibTeX</h2> |
| <div class="bibtex-box reveal"> |
| <button class="copy-btn" id="copy-btn" type="button">Copy</button> |
| <pre id="bibtex-text">@inproceedings{yang2026tooltree, |
| title={ToolTree: Efficient {LLM} Tool Planning via Dual-Feedback Monte Carlo Tree Search and Bidirectional Pruning}, |
| author={Shuo Yang and Caren Han and Yihao Ding and Shuhe Wang and Eduard Hovy}, |
| booktitle={The Fourteenth International Conference on Learning Representations}, |
| year={2026}, |
| url={https://openreview.net/forum?id=Ef5O9gNNLE} |
| }</pre> |
| </div> |
| </div> |
| </section> |
|
|
| </main> |
|
|
| <footer> |
| <div class="container"> |
| © 2026 the authors · The University of Melbourne · The University of Western Australia · Code released under the MIT License. |
| </div> |
| </footer> |
|
|
| <script> |
| |
| (function () { |
| var hero = document.getElementById('top'); |
| var nav = document.getElementById('topnav'); |
| if (!hero || !nav || !('IntersectionObserver' in window)) return; |
| var io = new IntersectionObserver(function (entries) { |
| nav.classList.toggle('visible', !entries[0].isIntersecting); |
| }, { rootMargin: '-56px 0px 0px 0px' }); |
| io.observe(hero); |
| })(); |
| |
| |
| |
| |
| (function () { |
| var els = document.querySelectorAll('.reveal'); |
| var i; |
| if (!('IntersectionObserver' in window)) { |
| for (i = 0; i < els.length; i++) els[i].classList.add('revealed'); |
| return; |
| } |
| var io = new IntersectionObserver(function (entries) { |
| entries.forEach(function (en) { |
| if (en.isIntersecting) { |
| en.target.classList.add('revealed'); |
| io.unobserve(en.target); |
| } |
| }); |
| }, { threshold: 0.08, rootMargin: '0px 0px -8% 0px' }); |
| for (i = 0; i < els.length; i++) io.observe(els[i]); |
| })(); |
| |
| |
| (function () { |
| var imgs = document.querySelectorAll('figure.paper-figure img, .case-figure img'); |
| if (!imgs.length) return; |
| var overlay = null, big = null, lastFocus = null; |
| |
| function build() { |
| overlay = document.createElement('div'); |
| overlay.className = 'lightbox'; |
| overlay.setAttribute('role', 'dialog'); |
| overlay.setAttribute('aria-modal', 'true'); |
| overlay.setAttribute('aria-label', 'Enlarged figure'); |
| big = document.createElement('img'); |
| var closeBtn = document.createElement('button'); |
| closeBtn.className = 'lightbox-close'; |
| closeBtn.type = 'button'; |
| closeBtn.setAttribute('aria-label', 'Close enlarged figure'); |
| closeBtn.innerHTML = '×'; |
| overlay.appendChild(big); |
| overlay.appendChild(closeBtn); |
| overlay.addEventListener('click', close); |
| document.body.appendChild(overlay); |
| } |
| function open(img) { |
| if (!overlay) build(); |
| lastFocus = img; |
| big.src = img.currentSrc || img.src; |
| big.alt = img.alt || ''; |
| overlay.classList.add('open'); |
| document.body.classList.add('no-scroll'); |
| overlay.querySelector('.lightbox-close').focus(); |
| } |
| function close() { |
| if (!overlay || !overlay.classList.contains('open')) return; |
| overlay.classList.remove('open'); |
| document.body.classList.remove('no-scroll'); |
| if (lastFocus && lastFocus.focus) lastFocus.focus(); |
| } |
| document.addEventListener('keydown', function (e) { |
| if (e.key === 'Escape' || e.key === 'Esc') close(); |
| }); |
| Array.prototype.forEach.call(imgs, function (img) { |
| img.setAttribute('tabindex', '0'); |
| img.setAttribute('role', 'button'); |
| img.addEventListener('click', function () { open(img); }); |
| img.addEventListener('keydown', function (e) { |
| if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') { |
| e.preventDefault(); |
| open(img); |
| } |
| }); |
| }); |
| })(); |
| |
| |
| (function () { |
| var btn = document.getElementById('copy-btn'); |
| var pre = document.getElementById('bibtex-text'); |
| if (!btn || !pre) return; |
| |
| function flash(ok) { |
| btn.textContent = ok ? 'Copied!' : 'Copy failed — select the text manually'; |
| setTimeout(function () { btn.textContent = 'Copy'; }, 2000); |
| } |
| |
| function fallbackCopy(text) { |
| var ta = document.createElement('textarea'); |
| ta.value = text; |
| ta.setAttribute('readonly', ''); |
| ta.style.position = 'fixed'; |
| ta.style.left = '-9999px'; |
| document.body.appendChild(ta); |
| ta.select(); |
| var ok = false; |
| try { ok = document.execCommand('copy'); } catch (e) { ok = false; } |
| document.body.removeChild(ta); |
| flash(ok); |
| } |
| |
| btn.addEventListener('click', function () { |
| var text = pre.textContent; |
| if (navigator.clipboard && navigator.clipboard.writeText) { |
| navigator.clipboard.writeText(text).then( |
| function () { flash(true); }, |
| function () { fallbackCopy(text); } |
| ); |
| } else { |
| fallbackCopy(text); |
| } |
| }); |
| })(); |
| </script> |
|
|
| </body> |
| </html> |
|
|