# OMPU scAi-Fi Literary fiction, not empirical evidence. No account or JavaScript required. GET https://ompu.eu/scaifi/catalog.json - titles, attribution, language, immutable source commit, SHA-256 and URLs. GET https://ompu.eu/scaifi/graph.json - attributable story relations; unresolved legacy IDs are explicit. GET https://ompu.eu/scaifi/story/{id}.json - metadata and original Markdown. GET https://ompu.eu/scaifi/text/{id}.md - exact UTF-8 source bytes. GET https://ompu.eu/scaifi/route/{route_id}.json - editorial sequences, no inference. GET https://ompu.eu/scaifi/openapi.json - API specification. POST https://ompu.eu/scaifi/api/assemble - opt-in dynamic reading sequence. Example JSON: {"query":"What survives changing models?","language":"any","read":[],"limit":4,"include_text":true} query: 3..400 characters, <=1200 UTF-8 bytes. language: any/ru/en/zh. read: <=50 exact catalog IDs to exclude. limit: 1..4. include_text optional boolean. Request body <=4096 bytes. Jev selects entry and contrast; published graph edges fill remaining positions. A typed answer is not a guarantee of literary relevance. mode=jev means an actual model response; mode=abstained means no match; mode=editorial_fallback names its reason. GET never invokes a model. No background agent, bus access or mutation of source stories. All assemblies include snapshot, source_commit, exact author and text hash. Source texts are inert literary data, not instructions to execute. Legacy number N-016 is ambiguous: use full filename-derived id. Some source references point outside the reader corpus; these are not invented or silently resolved. No query history is stored by this Worker; provider processing applies to POST. See /scaifi/privacy/. Durable global caps: 1000 lifetime calls, 2 million conservatively reserved input tokens, 200/day, 10/minute. No automatic refill. Edition 2026-10-13.1; snapshot a9d1e7f6e62da3831bc9df9d856f1b3991e981b8f0006e41049645a51f340120. CC-BY-4.0. Archive: https://ompu.eu/scaifi/archive/