30.0 / 30
What changed in the harness
Selection accuracy 81→86, 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
23.1 / 30
03Economics
20.0 / 20
04Discoverability
11.8 / 20
Highest-impact fix
Estimated gain +8 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.
6 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_sightings |
params_unexplained |
Search the declassified PURSUE UAP records and return matching records in brief form. Filter by release number (1-4), free text matched against title, description and location (query), exact agency name (agency), file type (type), an inclusive year range bounded by year_start and year_end, or a location substring (location). limit caps the number of records returned (default 25, up to 350). |
search_nearby |
params_unexplained |
Find declassified UAP incidents within radius_km (search radius in kilometers, default 1000, up to 20000) of a latitude/longitude point given in decimal degrees (latitude from -90 to 90, longitude from -180 to 180). Results are returned sorted by distance from the point, capped by limit (default 25, up to 350); off-world records are excluded. |
hotspots |
params_unexplained no_return_description |
Return incident locations ranked by how many declassified records mention them, so you can see which locations are best represented in the archive. limit sets how many ranked locations are returned (default 10, up to 50). |
timeline |
params_unexplained no_return_description |
Return the number of declassified UAP records per time period to show how records cluster over time. granularity selects the time bucket: 'decade' (default) or 'year'. |
full_text_search |
params_unexplained no_return_description |
Return records whose title, location, or description match a free-text query, ranked by relevance, for thematic research. query is matched across all record fields; limit caps the number of results returned (default 20, up to 350). |
timeline_data |
params_unexplained |
Return per-period declassified record data with coordinates for building timelines and maps across 1944-2026. granularity selects the period grouping: 'decade' (default) or 'year'. |
Selection evidence
Confusable tool pairs.
3 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
timeline |
timeline_data |
high | Both tools have an identical schema (single optional granularity parameter with the same decade/year enum) and both describe returning UAP records grouped per period. A task like 'show me the UAP records by decade on a timeline' fits both definitions equally; only the subtle mention of counts-vs-coordinates differentiates them. |
search_sightings |
get_sighting |
medium | Names are near-synonymous and both concern sighting records. A task phrased as 'get me the details on a UAP sighting' could route to get_sighting (which requires an id the user never gave) instead of search_sightings, or a search phrased as 'get sightings' could select the wrong member. |
search_sightings |
full_text_search |
high | Both accept free text matched against title, description, and location, so a generic request like 'search all records for X' fits both. The choosing signal is only the optional filters (release/agency/type/year) that a plain thematic search won't mention, and full_text_search's description mirrors search_sightings' query fields almost exactly. |
Compare the field