01Safety
0.0 / 30
What changed in the harness
Selection accuracy 96→96, token cost up 6%, unconfirmed writes 0%→0%.
Category breakdown
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
0.0 / 30
28.0 / 30
20.0 / 20
11.4 / 20
Highest-impact fix
Estimated gain +30 pointsExpose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
3 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 |
|---|---|---|
get_post_status |
no_return_description |
Checks the processing/publish status of a post previously created with post_to_social, identified by platform and post id. Returns the current status (e.g. pending, processing, published, failed) and any platform-specific result details such as a published URL. |
list_platforms |
no_return_description |
Lists the social platforms PostWire supports. Returns an array of platform objects, each including the platform name and the fields required or optional for posting to it (e.g. text, title, media_url). |
my_account |
no_return_description |
Retrieves the current PostWire account details. Returns the subscription plan, current monthly usage/quota, and the list of connected social platforms. |
Selection evidence
3 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
generate_posts |
post_to_social |
medium | A task like 'post about our new product launch to X and LinkedIn' could be satisfied by either drafting content (generate_posts) or immediately publishing (post_to_social) with an inline text/per_platform, especially if the agent skips the recommended two-step flow and picks whichever tool sounds like it 'creates the post'. |
generate_posts |
get_post_status |
low | Both relate to 'posts' but their purposes (drafting content vs checking publish status) are distinct enough that a natural-language request would rarely map ambiguously to both. |
post_to_social |
get_post_status |
low | A phrase like 'check on my social post' clearly maps to status checking, and 'publish/post' maps to post_to_social; little genuine overlap despite shared vocabulary. |
Compare the field