Workflow atlas
Each branch ends in an explicit outcome.
These diagrams summarize the human procedures; Arazzo remains the machine-readable operation sequence.
- 01Discovercapabilities
- 02Resolvelocation
- 03Searchbounded
- 04Acceptpersist
- 01Suggesttext
- 02Choosecandidate
- 03Use IDcanonical
- 01Classifyerror
- 02Preservekey
- 03Retrybounded
- 01Verifyraw body
- 02Claimevent ID
- 03Applyonce
Machine-readable workflows are published at https://cleanedweb.com/arazzo.json. OpenAPI
remains authoritative for individual operations.
Exact count only
When the output is only "how many", run the exactPropertyCount workflow. It
resolves the maintained market and calls countProperties with the filters.
Do not call searchProperties, set a one-record limit, follow result cursors,
or download rich records just to derive the total. Require a non-negative
total_matched and a snapshot identity; the count consumes no delivery Units.
Discover, search, validate, persist
Use this workflow only when the caller needs property records.
- Fetch capabilities without using a cached marketing or coverage value.
- Require a supported contract version and, for API-key or MCP access,
machine_access.enabled: trueplus non-emptyunit_costs. - Fetch authenticated markets and require the requested market.
- Resolve user-entered location text. If several candidates remain plausible, ask the user.
- Create a unique idempotency key for the exact bounded request.
- Submit
limitandmax_unitswith the search. - Apply every result-acceptance check before writing downstream.
- Upsert by
property_entity_id, retainsources, and store the usage receipt.
True zero-result count or search
For count-only work, accept zero only when the exact count operation succeeded,
total_matched is zero, and the snapshot is present. For record retrieval,
accept an empty search only when HTTP succeeded, returned and results.length
are zero, has_more is false, total_matched is zero, the snapshot is present,
and the request was evaluated against an entitled ready market. Never convert
401, 403, 429, 503, a network error, or a parsing error into empty success.
Ambiguous location
Call location suggestions using the user's text. Present meaningful candidates and preserve
their placeId. Do not select a candidate merely because it is first. Resume the search with
both the original location text and the selected location_place_id.
Idempotent recovery
After a timeout or retriable failure, resend the identical request with the identical key.
If the receipt reports idempotentReplay: true, continue using the recorded result and do not
perform the downstream business effect twice. A new key is allowed only for a genuinely new
request.
Current property and history
Retrieve the canonical property by property_entity_id, then request its newest-first changes
with a limit from 1 through 200. Finalized change history excludes suspected transitions and
incomplete observer runs. Re-read the property endpoint when current state matters.
Webhook processing
- Read the exact raw bytes.
- Verify timestamp and every supported
v1signature in constant time. - Claim
webhook-iddurably before the business effect. - Parse and validate
property-event-v1. - Commit the effect and event claim in one transaction where possible.
- Return
2xx; for a duplicate committed ID, acknowledge without repeating the effect.
Agent stop conditions
Stop or request human input for unsupported major versions, unsupported or unentitled markets, ambiguous locations, duplicate canonical IDs, count mismatches, stale snapshots, unexpected truncation, insufficient Units, a raised Unit ceiling, revoked authentication, or an unknown error code.
Standards and further reading