Read results and costs
Evaluate normalized records without losing provider-native output, cost, or failure context.
Start with records for the returned data, attempts for what ran, and
usage for billing information. Check all three before using the result.
Response fields to inspect
records: normalized records common across providers.records[].outputs: provider-native representations such as Markdown, HTML,
images, structured JSON, or artifacts.records[].primary_format: the selected representation for that record.attempts: provider, status, latency, result count, exact native options,
cost evidence, errors, andprovider_http_statusfor each attempt. A provider
status is distinct from the Scrappycoco API's HTTP status.provider_results: unfiltered candidate-specific records for comparisons.cursor: continuation state for caller-scheduled repeated Runs where supported.- Capability-specific snapshot metadata, when returned, describes only the
current one-shot Run; Scrappycoco does not schedule future Runs. next_action: deterministic transport guidance.
For a standalone Run, verify execution using selected_provider,
attempts[].provider, and records[].providers. route_id and route_label
identify routes inside a saved multi-route Discover execution and are normally
unset on standalone Run records.
Content records expose target status_code, final_url, and a small allowlist
of safe response_headers when the provider supplies them. A target status of
200 does not rule out a semantic soft-404; the calling client evaluates that
evidence.
Check whether the result answers your question
An attempt with status ok completed at the provider transport level. It does
not prove that the result is relevant, complete, correctly represented, or
untruncated for the user's request.
completeness_score measures presence of normalized transport fields. Read
completeness_basis and evaluate requested fields directly; the score is not a
semantic accuracy score.
Billing state
Execution state and billing state are independent. When billing is pending or
unresolved, cost fields are null, not finalized zero. Keep the request and job
IDs for usage and request correlation.
Cloro-backed records may contain upstream_credits_remaining. This is
Scrappycoco's shared upstream provider capacity, not the calling workspace's
balance or allocation. The caller's spendable balance is returned by /api/v1/me
as payg_available_usd_exact.
Empty, partial, and failed results
Do not silently convert empty output, partial records, truncation, or an
individual provider error into success. Preserve it as evidence and let the
calling client decide whether to change configuration or retry.
If an answer provider omits structured sources but includes links in its answer,
Scrappycoco may return those links in outputs.citations with
evidence_source: "answer_text_link" and
metadata.citation_evidence_source: "answer_links_fallback". This is transparent
transport evidence, not a judgment that every link satisfies the caller's rubric.
Updated about 1 month ago