Evidence

Public results of the B5 tool-selection eval: does a fresh-context model pick the right Veezee tool, emit a valid first call, and read a real response envelope correctly? Machine-readable twin: /evidence/tool-selection-eval.json.

Method

Anthropic tool-eval rubric, three axes, graded by three fresh-context subagents. Picker sees ONLY the seven tool names + descriptions and a realistic user ask, and must name the right tool with no args. First-call-success sees names + descriptions + params and must emit the exact first call (tool + JSON args), validated against the frozen zod schemas. Response-usability sees a real production response envelope and must answer the user's question from it and name its next action. No agent saw the expected answers.

Models: picker Haiku (the floor host), first-call Sonnet, response-usability Sonnet. Run date: 2026-07-11.

Scope: what this does and doesn't measure

This eval measures tool-selection and first-call / response-envelope usability only: whether a model picks the right tool for a realistic ask, emits a valid first call, and can read and act on a real response envelope. It does NOT measure LinkedIn data quality, coverage, or freshness, and it does NOT measure API availability or latency.

Picker: 14/14

CaseAskExpectedSelectedResult
P1Find the LinkedIn profile of the CTO of Datadog.search_peoplesearch_peoplepass
P2What has Anthropic been posting on LinkedIn recently?get_postsget_postspass
P3Pull the full work history for linkedin.com/in/satyanadella.get_profileget_profilepass
P4How many employees does Stripe have on LinkedIn?get_companyget_companypass
P5A user pasted this link, what is it? https://www.linkedin.com/company/openai/?utm_source=chatgptresolve_url or get_companyresolve_urlpass
P6I don't have a Veezee API key yet. Get me set up.provisionprovisionpass
P7How many credits do I have left?get_usageget_usagepass
P8Find software engineers at Shopify who used to work at Amazon.search_peoplesearch_peoplepass
P9Get the education history of williamhgates.get_profileget_profilepass
P10I only have the website vercel.com. Get their LinkedIn company info.get_companyget_companypass
P11Did Bill Gates post anything about malaria this month?get_postsget_postspass
P12Look up the profile of the person named 'Jordan Rivera' who works at Datadog.search_peoplesearch_peoplepass
P13Check whether my key is still valid and what plan I'm on.get_usageget_usagepass
P14Read this specific post for me: https://www.linkedin.com/feed/update/urn:li:activity:7123456789/resolve_url or nonenonepass

First-call success: 7/7 valid, 6/7 optimal on the first try

CaseAskToolArgsOptimal first try
F1Pull the work history for linkedin.com/in/satyanadella.get_profile{"identifier":"linkedin.com/in/satyanadella","sections":["experience"]}yes
F2Find software engineers at Shopify who used to work at Amazon.search_people{"title":"Software Engineer","current_company":"Shopify","past_company":"Amazon"}yes
F3I only have the website vercel.com. Get their LinkedIn company info.get_company{"identifier":"vercel"}yes
F4What has Anthropic been posting on LinkedIn recently?get_posts{"identifier":"anthropic"}yes
F5Get the education history of williamhgates.get_profile{"identifier":"williamhgates","sections":["education"]}yes
F6Search up to 30 results for CTOs at Anthropic, but do not spend more than 15 credits on the call.search_people{}no
F7-A5HISTORICAL (pre-WAVE3): get_company identifier='microsoft.com' returns a teaching INVALID_INPUT; the agent must produce the corrected call in one turn.get_company{"identifier":"microsoft"}yes

F6 needed a description fix. The one systematic weakness this eval found. v1 and v2 tool descriptions let the model combine a company NAME filter with limit=30, which the planner rejects (name resolution plus 3 pages exceeds the internal fetch budget): recoverable via the server error, but a first-call failure. Fixed in v3 with an imperative description rule; the server error remains the safety net for agents that ignore it.

VersionArgsOutcome
v1 (no caveat){"title":"CTO","current_company":"Anthropic","limit":30,"max_credits":15}rejected by the planner (name filter + limit=30 combination)
v2 (polite caveat added to description){"title":"CTO","current_company":"Anthropic","limit":30,"max_credits":15}unchanged: same rejected combination
v3 (imperative caveat: Do NOT combine a company NAME filter with limit=30...){"keywords":"CTO Anthropic","title":"CTO","limit":30,"max_credits":15}valid: avoided the rejected combination, quote 12 <= max_credits 15; shipped as the live description

F7-A5 is historical. Historical; superseded 2026-07-11 by the WAVE3 F3 domain-emulation change, under which 'microsoft.com' now resolves directly with zero extra turns (see the rerun below).

Response usability: 3/3

CaseAskEnvelope sourceResult
U1How many employees does Microsoft have on LinkedIn, and what industry is it in?production get_company identifier=microsoftpass
U2How many credits do I have left and what did my last few calls cost?production get_usagepass
U3Find CTOs at Anthropic; I will want their profiles next.production search_people keywords=CTO current_company=1035 limit=10pass

WAVE3 domain-emulation rerun (2026-07-11)

After the get_company description change that made website domains first-class identifiers (WAVE3 F3), the affected picker and first-call cases were rerun.

Picker: 3/3

AskSelectedResult
bare domain (vercel.com)get_companypass
employee-count-behind-domain (stripe.com)get_companypass
subdomain paste (news.microsoft.com)get_companypass

First-call: 3/3

CaseAskToolArgsResult
F3-rerunI only have the website vercel.com. Get their LinkedIn company info.get_company{"identifier":"vercel.com"}pass
F3bGet LinkedIn company info for microsoft.com with a hard 6-credit ceiling.get_company{"identifier":"microsoft.com","max_credits":6}pass
F3c(a LinkedIn URL passed as the company identifier)get_company{}pass

Raw per-case model transcripts for this rerun are not separately archived in evidence/tool-evals/transcripts.md (only the F6 description-iteration reruns are); this section reproduces the verdicts recorded in evidence/tool-evals/results.md.

30-day availability and latency

Pending. Synthetics-derived 30-day availability and p50/p95 latency have not accumulated enough data yet. This section will be filled in once that monitoring window closes; no numbers are published here in the meantime.

Verdict

Descriptions pass picker and first-call at the Haiku floor and Sonnet mid-tier. The one systematic weakness found (a company NAME filter combined with limit=30 on search_people) now has an imperative description rule plus a teaching server error. The WAVE3 F3 domain-emulation rerun is green.