Skip to content

v1.0.6 — LLM-native tool description

Latest

Choose a tag to compare

@rafaelsztutman rafaelsztutman released this 26 May 05:11
· 7 commits to main since this release

Summary

Reverts v1.0.5's prescriptive execute_code description; adopts an LLM-native shape driven by sub-agent ablation data. v1.0.5 had attempted to teach the stash-and-cite pattern via "STRONGLY RECOMMENDED…" prose in the tool description, which caused real regressions in the benchmark (one task's tokens went 49k → 93k; one long-conversation cell timed out at 20+ min vs 7.3 min on v1.0.4). The diagnostic ablation (5 candidate description styles × 3 Sonnet sub-agent trials each, no API calls) showed stash behavior was already 3/3 across every candidate — the prose was teaching default behavior at real per-call reasoning cost.

Changes

  • execute_code tool description fully rewritten. Schema for the response shape (including a new state field), one canonical example using the real klaviyo.reporting.campaignValues API surface and the real klaviyo.getConversionMetricId method, terse globals enumeration. Zero prescriptive prose, zero motivational framing.
  • New state field on the response envelope. Auto-populated from the sandbox's globals() helper post-execution — agent sees what's currently stashed structurally without making an explicit call. Carried through runner.ts, vm-runner.ts, sidecar-runner.ts, sidecar/index.ts, and protocol.ts.
  • globals() helper retained from v1.0.5 for explicit introspection. Captures baseline at module load via IIFE closure so built-in helpers + standard JS globals are filtered out.
  • Benchmark validation: 8-cell re-run on v1.0.6 against tasks 04 (2-turn) + 08 (10-turn). dtc-mcp recovered fully from the v1.0.5 regression and beats v1.0.4 on duration (−49% on task 04) and tool calls (−39% on task 04); tokens at parity with v1.0.4. On the 10-turn task 08, dtc-mcp wins tokens vs the official Klaviyo MCP for the first time (107k vs 110k, −3%).

Methodology + lessons

Lesson 8 added to bench/notes/findings.md: tool descriptions are LLM input, not human documentation. The reusable sub-agent ablation harness is at bench/runner/probe-descriptions.ts — ~5 min, ~$0 to validate any tool-description change before shipping.

Full writeup: bench/notes/findings.md, bench/notes/description-ablation.md.

Tests

63 passing (was 62 on v1.0.5). Added 3 new tests for the globals() helper and the state response field.

Next

v1.1.0 plan (bench/notes/v1.1.0-plan.md) — recipe-by-intent discovery. The bench surfaced that cross-resource workloads hallucinate even with the canonical example; the agent extrapolates patterns from the shown surface to other surfaces. Recipes covering distinct resource shapes (modeled on Anthropic Agent Skills) are the next leverage point.