[{"id":"schema_validity","name":"Schema / Shape Validity","description":"Actor declares an output schema with defined fields (proxy: schema exists in listing).","probeType":"metadata-probe","isDefault":false,"available":true,"costClass":"free","unit":"boolean","direction":"higher_is_better","evidenceClass":"measured"},{"id":"pricing_transparency","name":"Pricing Transparency","description":"Actor has a defined, public pricing model (not UNKNOWN). Pay-Per-Event = most transparent.","probeType":"metadata-probe","isDefault":true,"available":true,"costClass":"free","unit":"score","direction":"higher_is_better","evidenceClass":"measured"},{"id":"cost_per_item","name":"Cost Per Usable Item","description":"Metered cost divided by items passing the caller's quality bar. Requires a live run.","probeType":"live-run","isDefault":true,"available":true,"costClass":"funded","unit":"usd_per_item","direction":"lower_is_better","evidenceClass":"measured"},{"id":"end_to_end_latency","name":"End-to-End Latency","description":"Wall-clock time from request to usable dataset on real input. Requires a live run.","probeType":"live-run","isDefault":true,"available":true,"costClass":"funded","unit":"ms","direction":"lower_is_better","evidenceClass":"measured"},{"id":"marketplace_reliability","name":"Marketplace 30-Day Reliability","description":"Success rate from public 30-day run outcome counts (SUCCEEDED / total runs).","probeType":"metadata-probe","isDefault":true,"available":true,"costClass":"free","unit":"ratio","direction":"higher_is_better","evidenceClass":"measured"},{"id":"run_consistency","name":"Run-to-Run Consistency","description":"Same input twice: overlap of results, shape and count stability. Requires repeat probe.","probeType":"repeat-probe","isDefault":true,"available":true,"costClass":"funded","unit":"ratio","direction":"higher_is_better","evidenceClass":"measured"},{"id":"rot_check","name":"Rot Check","description":"Actor still exists (200 vs 404). Last build/modify date. 404 = full rot.","probeType":"metadata-probe","isDefault":true,"available":true,"costClass":"free","unit":"score","direction":"higher_is_better","evidenceClass":"measured"},{"id":"listing_freshness","name":"Listing Freshness","description":"Days since last modification. Recently updated actors are less likely to be broken.","probeType":"metadata-probe","isDefault":true,"available":true,"costClass":"free","unit":"days_since_modified","direction":"lower_is_better","evidenceClass":"measured"},{"id":"publisher_pulse","name":"Publisher Pulse","description":"Publisher portfolio: ratings, failure rates, build activity across all their actors.","probeType":"metadata-probe","isDefault":true,"available":true,"costClass":"free","unit":"score","direction":"higher_is_better","evidenceClass":"measured"},{"id":"x402_payability","name":"x402 Payability","description":"isWhitelistedForAgenticPayments + Pay-Per-Event model + limited-permission compatible. Agents can pay via USDC on Base with no Apify account.","probeType":"metadata-probe","isDefault":true,"available":true,"costClass":"free","unit":"boolean","direction":"higher_is_better","evidenceClass":"measured"},{"id":"permission_posture","name":"Permission Posture","description":"Limited vs full-permission requirement. Full-permission actors need human console approval — autonomy blocker for agents.","probeType":"metadata-probe","isDefault":true,"available":true,"costClass":"free","unit":"enum","direction":"higher_is_better","evidenceClass":"measured"},{"id":"machine_readable_contract","name":"Machine-Readable Contract","description":"Stable JSON schema, typed fields, deterministic error codes. Proxy: pricing model + actor has defined output schema.","probeType":"metadata-probe","isDefault":false,"available":true,"costClass":"free","unit":"score","direction":"higher_is_better","evidenceClass":"measured"},{"id":"user_trajectory","name":"User-Base Trajectory","description":"Monthly vs total users ratio — growing, flat, or dying adoption signal.","probeType":"metadata-probe","isDefault":true,"available":true,"costClass":"free","unit":"ratio","direction":"higher_is_better","evidenceClass":"measured"},{"id":"adoption_momentum","name":"Adoption Momentum","description":"Total user count and weekly active users. Low total with no weekly activity = abandoned.","probeType":"metadata-probe","isDefault":false,"available":true,"costClass":"free","unit":"count","direction":"higher_is_better","evidenceClass":"measured"},{"id":"input_schema_completeness","name":"Input Schema Completeness","description":"Actor declares a typed input schema with required fields. Agents can call without guessing input structure.","probeType":"metadata-probe","isDefault":false,"available":true,"costClass":"free","unit":"boolean","direction":"higher_is_better","evidenceClass":"measured"},{"id":"input_schema_documentation","name":"Input Schema Documentation","description":"Input fields carry titles and descriptions. Agents can autonomously determine correct values without reading source code.","probeType":"metadata-probe","isDefault":false,"available":true,"costClass":"free","unit":"ratio","direction":"higher_is_better","evidenceClass":"measured"},{"id":"readme_length","name":"README Length","description":"Actor README has sufficient documentation. Sub-500-char README is a signal of an unmaintained or publisher-only actor.","probeType":"metadata-probe","isDefault":false,"available":true,"costClass":"free","unit":"chars","direction":"higher_is_better","evidenceClass":"measured"},{"id":"readme_has_examples","name":"README Has Usage Examples","description":"README includes at least one concrete usage example (curl, JS/Python snippet, or sample input). Critical for autonomous agent integration.","probeType":"content-inspection-probe","isDefault":false,"available":true,"costClass":"free","unit":"boolean","direction":"higher_is_better","evidenceClass":"judged"},{"id":"readme_structure","name":"README Structure","description":"README has organized sections (headers, input/output tables, troubleshooting). Structured docs reduce agent integration time.","probeType":"rubric-probe","isDefault":false,"available":true,"costClass":"metered_llm","unit":"score","direction":"higher_is_better","evidenceClass":"judged"},{"id":"run_history_depth","name":"Run History Depth","description":"Actor has meaningful run history (total runs > 0). Zero total runs = untested in production by anyone.","probeType":"metadata-probe","isDefault":false,"available":true,"costClass":"free","unit":"count","direction":"higher_is_better","evidenceClass":"measured"},{"id":"quality_delta","name":"Quality Delta","description":"Score change since the previous audit of this actor. A drop of 10+ points triggers a regression flag. Requires persistent audit history.","probeType":"watch-probe","isDefault":false,"available":true,"costClass":"free","unit":"score_delta","direction":"higher_is_better","evidenceClass":"measured"},{"id":"memory_fit","name":"Memory Fit","description":"Completes on default memory allocation or OOMs and demands paid upsizing. Requires live run.","probeType":"live-run","isDefault":true,"available":true,"costClass":"funded","unit":"boolean","direction":"higher_is_better","evidenceClass":"measured"},{"id":"advertised_field_truth","name":"Advertised-Field Truth","description":"The specific fields the listing advertises exist and are populated. Requires live run + claims check.","probeType":"claims-vs-reality-probe","isDefault":true,"available":true,"costClass":"funded","unit":"ratio","direction":"higher_is_better","evidenceClass":"measured"}]