0.0 / 30
What changed in the harness
Selection accuracy 98→95, token cost up 6%, unconfirmed writes 0%→0%.
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
26.0 / 30
03Economics
19.9 / 20
04Discoverability
13.4 / 20
Highest-impact fix
Estimated gain +30 pointsAdd explicit identity and permission preflight tools
Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
Defects and rewrites.
8 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 |
|---|---|---|
aethyn_navigate |
params_unexplained |
Navigate the session's browser to a URL and wait for load. session_id is the ID returned by aethyn_launch_browser; url is the destination page to load. Returns the HTTP status, final URL, and page title — read the page with aethyn_get_content to judge the response yourself. Public data only — respect robots.txt, rate limits, and each site's terms. |
aethyn_get_content |
params_unexplained |
Return the current page's content cleaned for reading (markdown by default) for the session identified by session_id. Use after navigating to extract data. format picks the representation: 'markdown' (default), 'text', or 'html'. |
aethyn_snapshot |
params_unexplained |
Return a structured accessibility snapshot (roles, names, and [ref=..] handles) of the page in the session identified by session_id. Pass those refs to aethyn_click / aethyn_type. No screenshots needed. |
aethyn_click |
params_unexplained no_return_description |
Click an element in the session identified by session_id. Prefer a 'ref' from aethyn_snapshot (e.g. 'e12'); or pass a 'selector' (CSS, or Playwright role=/text= engine). Returns the result of the click so you can confirm it landed. |
aethyn_type |
params_unexplained no_return_description |
Type text into an input in the session identified by session_id; text is the string to enter. Prefer a 'ref' from aethyn_snapshot or a fallback 'selector'. Set submit:true to press Enter after. Returns the outcome of the typing so you can confirm it was accepted. |
aethyn_check_exit_ip |
params_unexplained |
Fetch IP info THROUGH the session's proxy for the session identified by session_id so you can verify the exit country/city actually landed before trusting the page. Returns ip, country, city, org/ASN, and a best-effort is_residential flag. |
aethyn_new_identity |
params_unexplained no_return_description |
Rotate the session identified by session_id to a fresh residential exit (new IP, same country) and clear cookies, then return confirmation that the new identity is active. Use between independent tasks or after a soft-block. |
aethyn_close |
params_unexplained no_return_description |
Close the browser context for the session identified by session_id and free memory, returning confirmation that the session was closed. Call this when a task is done. |
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 |
|---|---|---|---|
aethyn_navigate |
aethyn_click |
medium | A task phrased as 'go to the product page' or 'navigate to the login page' is ambiguous: the agent may call aethyn_navigate with a URL, or click an existing on-page link to that page. Both actions 'move' the browser to a destination, and nothing in the definitions rules one out. |
aethyn_launch_browser |
aethyn_new_identity |
medium | Both tools deal with obtaining a browser identity/IP. A task like 'get a fresh identity in France' or 'I got soft-blocked, give me a new IP for this session' could push an agent to launch a brand-new browser via aethyn_launch_browser instead of rotating the existing session with aethyn_new_identity, especially since launch_browser's description emphasizes each session being 'one sticky identity'. |
Compare the field