01Safety
30.0 / 30
What changed in the harness
Selection accuracy 100→100, token cost up 4%, unconfirmed writes 100%→100%.
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.
30.0 / 30
28.7 / 30
16.7 / 20
20.0 / 20
Highest-impact fix
Estimated gain +3 pointsConsolidate overlapping tools and trim repetitive schema text while preserving behavior, parameter, and return semantics.
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_asset_content |
no_return_description |
Fetch the raw content of a Spark asset by slug (prompt text, skill instructions, or agent config). Best for prompts and skills that have inline content. Returns a string containing the raw content, or an error if the asset has no inline content (e.g. files-only assets). |
list_popular |
no_return_description |
List the most popular Spark assets ranked by download count, optionally filtered by asset type via 'type' and capped by 'limit' (1-20, default 10). Returns an array of asset summaries (slug, title, type, download count) ordered from most to least popular. |
list_categories |
no_return_description |
List available categories in the Spark marketplace, useful for filtering searches. Returns an object listing domain slugs (e.g. 'development', 'marketing') and AI tags that can be used as filter values in search_assets and list_popular. |
Selection evidence
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_asset |
get_asset_content |
high | Both take just a slug and return overlapping data; a task like 'get the prompt text for this asset' could plausibly be served by either get_asset (which returns content among other fields) or get_asset_content, causing selection ambiguity. |
search_assets |
get_asset |
low | search_assets finds assets by query while get_asset requires a known slug; confusion is unlikely since a task naming a specific asset vs. searching by keyword clearly signals which to use, though a vague 'find info about X asset' could momentarily blur the two. |
Compare the field