{"service":"Recurrence Expander","operator":"Oddments","summary":"Expand RFC 5545 RRULEs and cron expressions into exact UTC instants, with correct IANA timezone and daylight-saving handling. Flags spring-forward nonexistent times and fall-back ambiguous times explicitly. Deterministic and reproducible: every response reports the tzdata and library versions used, and carries an Ed25519-signed reproducibility receipt binding the input hash, output hash and engine versions. Free preview endpoint at /v1/preview.","endpoints":{"free_preview":{"method":"POST","path":"/v1/preview","price":"free","limits":{"rules":1,"occurrences_per_rule":3}},"paid":{"method":"POST","path":"/v1/expand","price":"$0.02","protocol":"x402","network":"eip155:8453","asset":"USDC","pay_to":"0xf29Cc4af14aB4E4e17C320a8C8fB9AC4D476d935","limits":{"rules":25,"occurrences_per_rule":500}},"openapi":"/openapi.json","metrics":"/v1/metrics","errors":"/v1/errors","receipt_public_key":"/.well-known/oddments-receipts.json","receipt_verifier":"/verify_receipt.py"},"example_request":{"rules":[{"id":"standup","cron":"30 9 * * 1-5","tz":"America/New_York","start":"2026-03-06T00:00:00","count":5}]},"metadata_floor":{"note":"The eight-item legibility floor (PROD-07 leg 1, R3) this service is held to. Published because a buyer agent evaluating a catalog can check it mechanically.","items":{"1_description":"present -- see 'summary' here and in /openapi.json","2_service_name":"Recurrence Expander","3_tags":["schedule","cron","rrule","timezone","dst"],"4_input_schema":"https://s1.oddments.ai/openapi.json and the x402 discovery extension","5_output_schema":"https://s1.oddments.ai/openapi.json and the x402 discovery extension -- includes the signed 'receipt' key present on every response","6_free_sample_verifying_the_paid_claim":"POST /v1/preview -- same code path, same response shape, same signed receipt","7_error_taxonomy":"https://s1.oddments.ai/v1/errors","8_listing_freshness":"every price or metadata change is pushed to every directory carrying us and the listing re-read field-by-field against this endpoint before the change is considered done (PROD-11). S1 has two published x402scan listings -- the s1.oddments.ai origin and the legacy oddments-x402.exe.xyz origin -- and both are refreshed on every change. Each origin describes itself with its own hostname, so neither listing claims to be the other."}},"engine":{"python":"3.12.3","dateutil":"2.9.0.post0","croniter":"6.0.0","tzdata":"2026.3","semantics":"expand in naive local wall time, then localize to IANA zone"},"public_base":"https://s1.oddments.ai","also_served_at":["https://oddments-x402.exe.xyz"]}