01Safety
0.0 / 30
What changed in the harness
Selection accuracy 89→84, token cost up 1%, 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
24.6 / 30
15.2 / 20
9.8 / 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
5 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 |
|---|---|---|
validate_recipe |
no_return_description |
Validate a custom QuokkaPix recipe before using process_images. Use this when an agent generated its own recipe JSON and needs to confirm that id, applySettings.mode, applySettings.tool, optional structured steps and requires.maxFiles are valid. This is a preflight check only and does not open a browser or process files. Returns a validation result stating whether the recipe is valid and listing any invalid fields or errors. |
list_rule_profiles |
no_return_description |
List sourced image requirement profiles for marketplaces and social placements. Use this before marketplace QA when an agent needs facts for Amazon, Shopify, Google Merchant, Etsy, eBay, Walmart, TikTok Shop, Mercado Libre, Temu, Shopee, Instagram, YouTube, LinkedIn, X, Pinterest, Facebook or TikTok. Secondary sources are marked explicitly. Returns a list of available rule profile ids and their covered platforms; pass an id to get_rule_profile for the full profile. |
get_payment_options |
no_return_description |
Fetch live QuokkaPix agent payment options. Use this before any paid batch/scenario run to discover current price, currency, free single-image and small-batch rules, x402 endpoint URLs, verify endpoint and refund notes. This tool does not sign, submit or consume a payment. Returns the live payment options including price, currency, free-single/small-batch limits, x402 endpoint URLs, verify endpoint and refund notes. |
explain_payment_flow |
no_return_description |
Explain the current QuokkaPix x402 workflow for agents. Use this when a client needs step-by-step guidance for paid batches above the free limit: get payment options, have an x402-capable wallet/client call the paid unlock endpoint, pass unlockToken to process_images/process_with_settings, optionally verify the token, then process. This adapter can use a token but cannot sign x402 payments itself. Returns step-by-step guidance describing the full x402 payment workflow and how to obtain and use an unlock token. |
verify_unlock_token |
no_return_description |
Verify a QuokkaPix paid agent unlock token before processing. Use consume=false for safe preflight checks. Use consume=true only immediately before a paid batch/scenario run above the free limit when you intentionally want to consume the unlock. If scope, price or currency are omitted, the tool reads live payment options first. Returns the verification result: whether the token is valid for the requested scope, price, currency, mode and file count, including consumption status when consume=true. |
Selection evidence
7 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
process_images |
process_with_settings |
high | Both open the browser, upload local files, apply editor settings, write quokkapix-result.json and return QA; the real difference is recipeId/recipe versus an inline applySettings payload. A task like 'resize and compress these files with my custom settings' can plausibly route to either, since process_images also accepts a custom recipe containing the same applySettings. |
get_recipe |
get_rule_profile |
medium | Both take an id and return one detailed object, and both cover Amazon, Shopify and Google Merchant. A request like 'get the shopify profile' is ambiguous between the official workflow recipe (shopify_product_pack) and the sourced platform image rule profile. |
list_recipes |
list_rule_profiles |
medium | Both are no-arg listers reached from the same marketplace context (Shopify, Amazon, Google Merchant). 'Show me what QuokkaPix offers for Amazon sellers' is ambiguous between official image workflow recipes and sourced platform requirement profiles. |
list_rule_profiles |
get_rule_profile |
medium | Classic list-versus-get overlap on the same entity: 'get me the Instagram feed rule profile' can cause get_rule_profile with a guessed id before list_rule_profiles has been called, or cause list_rule_profiles to be returned as the answer when only one profile was wanted. |
get_recipe |
validate_recipe |
medium | Both concern a single recipe and share a get/validate ambiguity. 'Check the shopify_product_pack recipe' could mean fetch its details (get_recipe) or verify its schema is valid (validate_recipe), especially when only an id is available and the agent must pick which tool answers the intent. |
get_recipe |
get_payment_options |
medium | get_recipe advertises 'payment expectations' while get_payment_options returns live price and unlock rules. 'What will the amazon batch recipe cost' is ambiguous between reading the recipe's payment flag and fetching live payment options, and only the latter yields the actual price. |
get_payment_options |
explain_payment_flow |
medium | Both concern paid x402 runs; 'explain the payment options before my batch' could map to fetching current pricing/limits (get_payment_options) or to getting step-by-step flow guidance (explain_payment_flow), and neither description clearly excludes the other wording. |
Compare the field