30.0 / 30
What changed in the harness
Selection accuracy 100→98, token cost up 10%, unconfirmed writes 100%→100%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
28.0 / 30
03Economics
20.0 / 20
04Discoverability
12.6 / 20
Highest-impact fix
Estimated gain +7 pointsMake target tools discoverable on the first call
Clarify tool names, decision boundaries, and required argument schemas so an agent can choose and construct the target call without exploratory steps.
Description evidence
Defects and rewrites.
4 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
search_jobs |
params_unexplained no_return_description |
Search 1M+ job listings from 20K+ companies with keyword or AI semantic search, plus filters for location, salary, remote type, seniority, skills, company, country, and posting time. Returns a paginated list of matching job listings (use page and per_page to page through results). job_function filters by department (eng, data, design, sales, ops, marketing, security, product, finance, hr, legal, other); employment_type filters by full_time, part_time, contract, or internship; page selects which page of results to fetch, starting at 1. |
get_company |
name_restates_behavior no_return_description |
Look up a company's public profile by its domain (e.g. "stripe.com") or handle, useful for evaluating an employer before applying. Returns the company profile including the number of jobs currently open, industry, company size, and the URL of its career page. |
find_similar_jobs |
no_return_description |
Find jobs similar to a given job listing using AI vector similarity, useful for "more like this" discovery. Returns a list of similar job listings for the given job handle or ID, up to per_page results (default 10). |
get_filter_options |
no_return_description |
Get the available filter values for the requested facets (seniority, job function, remote type, employment type, required skills) along with job counts, useful for discovering which values can be used in search filters. Returns the requested facet fields with their possible values and job counts. |
Selection evidence
Confusable tool pairs.
2 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
get_company |
get_filter_options |
medium | Both tools surface job counts ('open job count' vs 'job counts'), so a task like 'how many open jobs are there' is ambiguous: a company-scoped count maps to get_company, while aggregate/facet counts map to get_filter_options. |
search_jobs |
find_similar_jobs |
medium | Both support 'similar jobs' discovery: search_jobs via AI semantic_query and find_similar_jobs via vector similarity. A task like 'find jobs similar to machine learning engineer' has no job_id, so an agent may wrongly call find_similar_jobs (which requires a job ID) instead of using search_jobs' semantic search. |
Compare the field