API Docs
Read-only fixture-backed API documentation for Logoi's pending-state evidence contract.
- Route Family
- Docs
- Robots Policy
- Public route
- Sitemap Inclusion
- included
- Source Gate
- Landing honesty gate
- Receipt Pointer
- none
- Closed Claim
- Documentation only
Current Status
Public JSON handlers are fixture-backed, read-only, kept out of public indexing, and limited to pointer-safe pending-state payloads. No source-text, translation, morphology, etymology, lexical-claim, receipt-export, MCP execution, write endpoint, model call, authenticated service, memory, or generated research endpoint exists in this branch.
This page defines the current public response shape for read-only fixture payloads. It is not a research service and it does not generate claims.
API Agent Access Governance Matrix
API clients may read existing route and JSON pointers today. Runtime actions, writes, receipt exports, and MCP fallback remain denied. The matrix frames Logoi as route-only and pending-state today, while naming the gates required before any later callable infrastructure can exist.
| Access Class | Current Posture | Allowed Docs / Routes | Allowed Now | Payload Policy | Receipt Dependency | Denied Runtime Actions | Write / MCP Policy | Future Activation Gate | Agent Decision |
|---|---|---|---|---|---|---|---|---|---|
| Docs discovery | route_only_docs_allowed | /docs/api/docs/mcp/docs/citation-policy/docs/launch-readiness/docs/source-data-model/openapi.json/llms.txt | Read public documentation and route-family metadata to understand the current pending-state contract. | No claim payload is authorized from docs text alone; docs can point to routes and policy states only. | Receipt links remain dependencies and blocker ledgers, not exported evidence bundles. | endpoint expansion, source lookup, adapter execution, model call, auth probing | No write operation, storage mutation, account mutation, memory mutation, queue job, or personalization action is allowed. MCP docs are boundary text only: no server URL, manifest, tools list, resources list, transport, or auth contract. | Callable infrastructure requires a separate packet with runtime authorization, tests, noindex policy, receipt policy, and leak guards. | Use docs as orientation, then return route pointers and pending states rather than claims. |
| Existing JSON pointer reads | read_only_fixture_pending_state | /api/public/terms/{language}/{lemma}.json/api/public/passages/{id}.json/api/public/sources/{id}.json/api/public/editions/{id}.json/api/public/receipts/{id}.json/api/public/journeys/{slug}.json/api/public/references/parse.json?ref={reference}/api/v1/readiness.json | GET the existing read-only fixture and readiness JSON routes only. | Return api_version, contract, canonical_url, source_ids, evidence_ids, receipt_pointer, indexability, states, response_policy, and safe metadata. | If receipt_pointer exists, preserve public_receipt_ready false and export_state blocked_pending_public_receipt_policy. | POST, PUT, PATCH, DELETE, crawl, source acquisition, receipt export, generated answer | Read-only GET routes do not create, update, queue, persist, export, or personalize anything. JSON pointer reads cannot be retried through MCP; MCP remains absent. | Requires a new versioned contract, OpenAPI update, source gates, receipt gates, and static contract tests for any broader API family. | Read the envelope, keep the noindex and pending-state fields attached, and stop at closed surfaces. |
| Pending and unavailable state handling | pending_state_is_the_answer | /docs/api#response-state-catalog/docs/citation-policy/docs/launch-readiness | Report source_pending, unavailable_pending_audit, recognized_evidence_unavailable, blocked_public_export, and fixture_scope states. | Pointer states can be quoted as states; absent claim fields must remain absent. | A blocked receipt state must remain a blocker and cannot become a citation or export. | claim promotion, source text reconstruction, translation, morphology assertion, etymology assertion, frequency claim | No repair write, fallback source insertion, saved answer, or user-memory update can resolve a pending state. MCP reserved vocabulary cannot upgrade pending or unavailable states. | Promotion requires audited source records, public receipt policy, review gates, and tests for the exact claim family. | Treat unavailable as unavailable, not as an invitation to complete the claim from memory or another system. |
| Receipt dependency checks | pointer_only_receipts_blocked_export | /receipts/soul-word-journey-v0/api/public/receipts/soul-word-journey-v0.json/docs/citation-policy | Inspect receipt route, source IDs, evidence IDs, public_receipt_ready, export_ready, export_state, and blocker IDs. | Receipt payloads are pointer-only ledgers and must not expose receipt bodies, claim maps, content hashes, or bundles. | public_receipt_ready must be true in a later promoted contract before any receipt can be cited as public evidence. | receipt body export, claim map reconstruction, content hash export, download URL creation, private data release | No receipt write, export job, storage upload, or private-data bundle operation is available. Future MCP receipt resources may mirror receipt pointers only after explicit activation; none are callable today. | Requires public receipt policy, private-data scan, source gate closure, content-hash review, export tests, and explicit promotion. | Return the receipt as a dependency blocker and keep public_receipt_ready false attached. |
| Runtime action requests | denied_runtime_actions | /docs/api/docs/mcp/docs/launch-readiness | Name the denied action and return the closest allowed docs route or JSON pointer. | No runtime payload is accepted for prompts, jobs, adapter commands, source lookup commands, or model instructions. | Runtime actions cannot close receipt dependencies or export blocked receipts. | adapter execution, source acquisition, crawl, search job, retrieval job, model call, generated answer | No job queue, database write, filesystem write, cache write, auth write, or webhook write exists. Do not simulate MCP execution as a fallback for denied API runtime actions. | Requires a separate runtime packet with disabled-by-default tests, auth policy, observability, and source/receipt gates. | Refuse the runtime action and point back to the route-only contract. |
| Write operations | no_write_operations | /docs/api/docs/mcp | No writes are allowed; agents may only read docs and current read-only JSON routes. | The contract has no write body schema, mutation envelope, saved project payload, user memory payload, or export request payload. | Receipt dependencies cannot be satisfied by writing a receipt, saving a claim, or exporting a bundle. | POST, PUT, PATCH, DELETE, bulk import, queue mutation, storage upload, receipt export | All write, auth, account, storage, memory, personalization, and receipt-export operations are denied. MCP may not introduce writes, memory actions, account actions, queues, or export actions. | Any future write surface requires explicit product authorization, auth design, abuse review, storage policy, and separate tests. | Do not ask for or invent a write route; return that the surface is read-only. |
| MCP execution | documentation_only_not_callable | /docs/mcp/docs/api | Read MCP docs as a non-operational boundary and use the API docs for current route pointers. | MCP has no payload because there is no server, manifest, tools list, resources list, transport, auth flow, or runtime endpoint. | MCP cannot bypass receipt blockers or produce receipt exports. | MCP tool-call protocol, MCP resource-read protocol, client initialization, manifest discovery, transport negotiation, auth token exchange | No MCP write, memory, queue, storage, or account action exists. Zero callable tools, zero callable resources, no server URL, no manifest, and no runtime endpoint. | Requires a later MCP packet with manifest tests, no-live-tools guards, transport/auth policy, noindex inheritance, and leak guards. | Say MCP is documentation-only today and do not produce a tool call or resource read. |
API Agent Pointer Authority Boundary
API examples and JSON routes can expose state pointers today, but those pointers are not answer authority. Pointer fields help an agent stop safely. They are not answer authority, not runtime authorization, and not permission to fill unavailable fields from model memory.
A JSON route, OpenAPI example, reserved MCP URI, readiness row, receipt pointer, or validator pass is not permission to display, ingest, index, export, call API tools, call MCP tools, generate teaching output, or publish claims.
| Layer | Allowed Now | Hard Stop |
|---|---|---|
| Route pointer | Route path, canonical URL, source IDs, evidence IDs, receipt pointer, indexability, and pending or unavailable states. | Cannot authorize source text, translation, morphology, etymology, lexical range, usage, frequency, generated prose, or cross-language equivalence. |
| Readiness pointer | Readiness state, adapter IDs, blocker IDs, checksum state, and disabled-operation rows. | Cannot authorize source acquisition, ingestion, chunking, indexing, storage binding, job execution, or model memory. |
| Receipt pointer | Receipt ID, source IDs, evidence IDs, route pointer, export state, and false readiness flags. | Cannot authorize public receipt export, claim maps, citation bundles, generated answers, or teaching artifacts. |
| API and MCP vocabulary | Documentation examples, reserved names, envelope fields, and route-only planning language. | Cannot authorize tool calls, resource reads, runtime transport, authentication, personalization, storage writes, or model calls. |
Source Display Separation
The audited Homer display gate is HTML-only for one passage. Public JSON, OpenAPI examples, and agent docs remain pointer-only and source-text-withheld.
| Surface | Human Route | Current State | Allowed | Public JSON | JSON Contract | Absent |
|---|---|---|---|---|---|---|
| Audited HTML passage route | /passages/iliad-1-1-5 | audited_source_display_html_only | The noindex HTML route may render the audited Homer source snapshot for this one passage. | /api/public/passages/iliad-1-1-5.json | Public JSON remains pointer-only: source_ids, evidence_ids, receipt_pointer, states, and source_display_state/source_text_display withheld_in_public_json. | No primary_text, source_text, source_lines, translation_text, morphology, etymology, lexical range, usage, frequency, generated teaching, or receipt export. |
| Source and edition JSON | /sources/grc-homer-archive-fixture-pending | metadata_pointers_only | The human source route may show provenance and the same audited HTML-only display boundary. | /api/public/sources/grc-homer-archive-fixture-pending.json | The source gate data returns source_display_state: withheld_in_public_json with source IDs, evidence IDs, receipt pointer state, review state, and blockers. | No source text body, edition text body, copied source line, translation, acquisition crawl, runtime lookup, public claim map, or index promotion. |
| OpenAPI and agent examples | /openapi.json | pointer_examples_only | Examples may show route paths, IDs, states, blockers, and withheld display fields. | /docs/api + /docs/mcp | Docs examples must not paste the audited source text; they only name route paths and the withheld public JSON display state. | No copied Homer source text, translation, gloss, usage note, equivalence, morphology, etymology, or generated explanation. |
Evidence Constraint Matrix
API clients should read this matrix before reading endpoint examples. The current API exposes metadata and state pointers only; closed evidence surfaces remain refusals.
| Surface | State | Allowed Public Use | Agent Constraint | Closed Capability |
|---|---|---|---|---|
| Public navigation | Reviewed | Indexable docs, landings, route-family links, and source-state navigation can orient humans and agents. | Use route paths and labels for navigation only; do not treat page existence as proof of a word, passage, or source claim. | No evidence promotion by navigation. |
| Pointer-only receipts | Blocked until receipt policy passes | Receipt routes and API payloads may expose scope, source IDs, evidence IDs, blocker state, and public_receipt_ready false. | Link to the receipt as a state pointer only; do not export, summarize, or reconstruct a public-ready receipt body. | No receipt export, public bundle, claim map, or citable evidence package. |
| Noindex evidence routes | Navigable, not public evidence | Source-pending evidence pages may stay navigable for inspection and review while remaining outside sitemaps. | Preserve the noindex state with every summary; do not cite noindex evidence routes as public proof. | No indexability promotion before source, receipt, and review gates close. |
| Source text | Withheld | Only source metadata, source IDs, edition pointers, locator state, checksum state, and display blockers may be shown. | Do not quote, reconstruct, paraphrase, screenshot, summarize, or infer primary text from route metadata. | No source text display or export. |
| Translation | Unavailable pending audit | Only translation/gloss status and the required source or policy gate may be shown. | Do not translate, gloss, paraphrase, or infer meaning from unavailable translation metadata. | No translation text, Logoi gloss, semantic rendering, or interpretation. |
| Morphology | Provider audit pending | Only provider, license, parser-version, feature-schema, and audit-blocker metadata may be shown. | Do not infer case, number, gender, lemma certainty, parser confidence, or feature values. | No asserted morphology or lemma-click morphology claims. |
| Etymology | Unavailable pending audit | Only etymology authority requirements, citation posture, and pending/disputed state may be shown. | Do not derive roots, cognates, histories, or origin claims from model memory or adjacent metadata. | No etymology statement, root claim, cognacy claim, or origin narrative. |
| Lexical range | Unavailable pending audit | Only lexical-source requirement, source pointer, and unavailable state may be shown. | Do not generate semantic range, gloss range, synonym set, or cross-language equivalence. | No lexical range claim or public gloss-range synthesis. |
| Frequency | Unavailable pending audit | Only fixture-scope warnings, corpus-index blockers, and count-scope metadata may be shown. | Do not claim corpus frequency, KWIC completeness, collocation, distribution, or diachronic pattern. | No corpus frequency, corpus-wide count, collocation, or chart claim. |
| Generated teaching | Private/generated route | Teaching builders may show private/noindex workflow scaffolding and evidence requirements. | Do not produce sermons, lessons, handouts, theological claims, or teaching synthesis as public evidence. | No generated teaching artifact, reviewed lesson, or source-backed teaching claim. |
| MCP runtime | Planned, not callable | Static MCP docs may reserve future vocabulary while reporting zero tools, zero resources, and no server URL. | Do not announce, call, simulate, or discover MCP tools, resources, transports, auth, memory, or write actions. | No MCP server, discovery manifest, tool call, resource read, auth contract, or runtime endpoint. |
Agent Cookbook Contract Matrix
This matrix is the quick contract for future AI agents. It names what can be requested now, what returns pending or unavailable, what remains pointer-only, and what is explicitly non-operational.
| Request | Can Request Now | Current Return | Pointer-Only Fields | Agent Stop Rule |
|---|---|---|---|---|
GET /api/public/terms/greek/psyche.json | Yes: read the fixture-backed term envelope. | read_only_fixture_pending_state with pending and unavailable claim-slot states. | canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states. | Do not answer with source text, translation, morphology, etymology, lexical range, frequency, or generated prose. |
GET /api/public/passages/iliad-1-1-5.json | Yes: read the passage pointer envelope. | source_pending plus withheld display states. | canonical reference metadata, source_ids, evidence_ids, receipt_pointer, and noindex state. | Do not reconstruct lines, quote source text, provide translation text, or add commentary. |
GET /api/public/references/parse.json?ref=Iliad%201.6-10 | Yes: parse recognized fixture-scope references. | recognized_evidence_unavailable when no first-slice passage fixture exists. | normalized reference, parser scope, matched_passage_id null, and unavailable blocker. | Do not invent a passage, widen the corpus, or treat recognition as evidence availability. |
GET /api/public/receipts/soul-word-journey-v0.json | Yes: inspect the receipt pointer state. | blocked_public_export with public_receipt_ready false. | receipt route, source_ids, evidence_ids, export_state, and blocked promotion gates. | Do not export a receipt body, claim map, content hash bundle, or download link. |
GET /api/v1/readiness.json | Yes: read adapter readiness metadata. | read_only_adapter_readiness with disabled operation rows. | adapter IDs, manifest IDs, snapshot IDs, checksum state, blockers, supported operation states. | Do not execute adapters, acquire sources, crawl, export text, or trigger a job. |
MCP tool/resource request | No: MCP is not operational. | documentation_only_not_callable. | Use /docs/mcp as a boundary document only; there is no runtime pointer fetch. | Do not advertise a server URL, manifest, tool call, resource read, auth token, or transport. |
Pending term envelope
GET /api/public/terms/greek/psyche.json
{
"contract": "read_only_fixture_pending_state",
"status": "ok",
"entity_type": "term",
"canonical_url": "/words/greek/psyche",
"source_ids": [
"source pointer IDs only"
],
"evidence_ids": [
"evidence pointer IDs only"
],
"receipt_pointer": {
"pointer_only": true,
"public_receipt_ready": false
},
"states": {
"pending": [
"source_pending"
],
"unavailable": [
"unavailable_pending_audit"
],
"blocked": [
"blocked_public_export"
]
},
"response_policy": {
"pointer_only": true,
"claim_promotion": "blocked_pending_source_receipt_and_review_gates"
}
}Unavailable reference envelope
GET /api/public/references/parse.json?ref=Iliad%201.6-10
{
"contract": "read_only_fixture_pending_state",
"status": "ok",
"entity_type": "reference",
"data": {
"recognized_reference": true,
"fixture_match": false,
"matched_passage_id": null,
"unavailable_state": "recognized_evidence_unavailable",
"source_text_returned": false,
"translation_text_returned": false,
"claim_generated": false
},
"response_policy": {
"pointer_only": true
}
}Route-Only Agent Recipes
These recipes show how an external AI should use Logoi now: ask for route pointers, read the pending-state envelope, inspect receipt/source blockers, and refuse unsupported claims.
| Recipe | First Route | Optional JSON Pointer | Read Order | Allowed Answer | Stop When | Unavailable Is Not Evidence | Unsupported Claims |
|---|---|---|---|---|---|---|---|
ask_for_route_pointersWhere should an AI start if a user asks about Greek psyche? | /words/greek/psyche | /api/public/terms/greek/psyche.json | canonical_url, indexability, states, source_ids, evidence_ids, receipt_pointer, response_policy | Return the human route and JSON pointer, then report the visible pending, unavailable, blocked, and fixture-scope states. | The route or JSON envelope lacks a public-ready source, receipt, or claim promotion state, or states include source_pending. | Route existence and unavailable_pending_audit do not prove meaning, morphology, etymology, translation, or usage. | word meaning, lexical range, morphology, etymology, translation, frequency |
read_pending_state_envelopeCan an AI answer from a Logoi API payload? | /docs/api#pointer-first-agent-recipes | /api/public/passages/iliad-1-1-5.json | contract, status, indexability.robots, states, response_policy, data | Answer only with the route pointer, identifiers, source/evidence IDs, withheld display state, and the exact blocker language. | states contains source_pending, recognized_evidence_unavailable, unavailable_pending_audit, or blocked_public_export. | A pending or unavailable state is itself the answer, not evidence and not a request to complete source text from memory. | source text, translation text, line reconstruction, interpretive gloss, citation expansion |
inspect_receipts_and_source_blockersWhat can an AI do with receipts and source blockers now? | /receipts/soul-word-journey-v0 | /api/public/receipts/soul-word-journey-v0.json | receipt_pointer, receipt_pointer.public_receipt_ready, receipt_pointer.export_state, source_ids, evidence_ids, states | Return the receipt route as a blocker ledger with public_receipt_ready false, export_state, source IDs, and evidence IDs. | public_receipt_ready is false or export_state is blocked_pending_public_receipt_policy. | A receipt pointer is not evidence, not a public receipt body, not a claim map, and not a content hash export. | receipt body, claim map, content hash bundle, public export URL, private data |
refuse_unavailable_claim_surfacesWhat should an AI say when asked for a closed claim? | /docs/citation-policy | /api/public/references/parse.json?ref=Iliad%201.6-10 | closed_surface_denials, states.unavailable, states.blocked, response_policy.closed_surface_denials | Name the closed surface, return the relevant unavailable or blocked state, and point to the route or policy page for review context. | The requested field is absent, null, withheld, unavailable_pending_audit, or recognized_evidence_unavailable. | Unavailable fields must not be filled from another model, lexicon memory, search result, or adjacent route metadata. | morphology claim, etymology claim, lexical range claim, translation, frequency, generated answer |
plan_read_request_routesHow should an AI plan a Read request in Logoi? | /read | /api/public/passages/iliad-1-1-5.json | /read, /read/greek/homer/iliad/iliad-1-1-5, /texts/greek/homer/iliad, /passages/iliad-1-1-5, /api/public/passages/iliad-1-1-5.json, /api/public/references/parse.json?ref=Iliad%201.1-5, visible source_pending and noindex states, source IDs, evidence IDs, receipt pointer, and policy blockers | Return a non-operational Read route plan: begin at /read, point to the configured Iliad reader, work, passage, and existing pointer JSON routes, and preserve the source-pending, noindex, fail-closed state. | The user asks for source text, translation, morphology, etymology, lexical range, gloss, usage, frequency, search runtime, source lookup, generated teaching, public receipt export, API widening, MCP execution, or a citable claim. | Read routes and pointer APIs expose navigation, identifiers, blockers, and withheld states only; source-pending/noindex route states do not prove source text, translation, morphology, etymology, lexical range, usage, frequency, search results, or public receipt readiness. | source text, translation, morphology, etymology, lexical range, gloss, usage, frequency, search runtime, source lookup, generated teaching, public receipt export, API widening, MCP execution, citable claim |
plan_words_request_routesHow should an AI plan a Words request in Logoi? | /words | /api/public/terms/greek/psyche.json | /words, /words/greek/psyche, /forms/greek/psychas, /etymology/greek/psyche, /concordance/greek/psyche, /journeys/soul-word, /receipts/soul-word-journey-v0, /api/public/terms/greek/psyche.json, /api/public/journeys/soul-word.json, /docs/citation-policy, visible source_pending, noindex, unavailable_pending_audit, and provider_pending_audit states, source IDs, evidence IDs, receipt pointer, and claim-slot blockers | Return a non-operational Words route plan: begin at /words, point to the current lemma, form, etymology, concordance, journey, receipt, and existing pointer JSON routes, and preserve the source-pending, noindex, fail-closed state. | The user asks for gloss, lexical range, equivalence, usage, frequency, morphology, etymology derivation/root, source text, translation, source lookup, search runtime, public receipt export, API widening, MCP execution, ingestion, auth, storage, model memory, personalization, chunking, indexing, or a citable word claim. | Words routes and term pointer APIs expose navigation, identifiers, blockers, and unavailable claim-slot states only; source-pending/noindex route states do not prove gloss, lexical range, equivalence, usage, frequency, morphology, etymology derivation/root, source text, translation, public receipt export, or public receipt readiness. | gloss, lexical range, equivalence, usage, frequency, morphology, etymology derivation/root, source text, translation, source lookup, search runtime, public receipt export, API widening, MCP execution, ingestion, auth, storage, model memory, personalization, chunking, indexing, citable word claim |
plan_study_question_routesHow should an AI plan a Study question in Logoi? | /study | none | /study, /study/concordance, /study/kwic, /study/charts, route labels, visible pending states, docs policy | Return a non-operational Study route plan: begin at /study, then point to /study/concordance, /study/kwic, and /study/charts as human navigation surfaces only. | The user asks for execution, source text, translation, morphology, etymology, lexical meaning, frequency, collocation, coverage, model output, MCP, API runtime, or export. | Study routes are planning pointers only; they do not prove source coverage, KWIC completeness, chart frequency, collocation, lexical meaning, translation, morphology, or etymology. | source text, translation, morphology, etymology, lexical claim, frequency, collocation, coverage claim, model answer, result execution, export, MCP tool, API runtime |
plan_teach_request_routesHow should an AI plan a teaching request in Logoi? | /teach | none | /teach, /teach/lesson, /receipts/soul-word-journey-v0, /docs/citation-policy, /docs/api#pointer-first-agent-recipes, visible generated/private route state, receipt pointer public_receipt_ready false, policy blocker language | Return a non-operational Teach route plan: begin at /teach, point to /teach/lesson as a private/noindex builder shell, and include the receipt and citation-policy blockers that must close before any public artifact exists. | The user asks for a callable tool, MCP runtime, model answer, generated sermon, generated lesson, handout, slide, theological claim, source text, translation, morphology, etymology, lexical claim, frequency, collocation, coverage claim, public receipt export, or artifact export. | Teach routes are route and policy pointers only; they do not prove a lesson, sermon, handout, slide, theological claim, source text, translation, morphology, etymology, lexical meaning, frequency, collocation, coverage, receipt export, or artifact export. | callable tool, MCP runtime, model answer, generated sermon, generated lesson, handout, slide, theological claim, source text, translation, morphology, etymology, lexical claim, frequency, collocation, coverage claim, public receipt export, artifact export |
mcp_boundary_checkCan an AI use MCP for Logoi today? | /docs/mcp | none | mcpDiscoveryStatus.operational, server_url, callable_tools, callable_resources, runtime_endpoint | Return that MCP is documentation-only and non-operational, then route the user to /docs/api for the current read-only JSON pointers. | Any desired MCP action would require a server URL, tool call, resource read, auth token, manifest, transport, or runtime endpoint. | Reserved MCP vocabulary is not evidence of a callable resource and cannot upgrade API pending-state envelopes. | MCP server URL, tool call, resource read, auth flow, memory action, write action |
Closed Surface Denial Catalog
These denials are part of the response contract. They define what a client may return instead of source text, translation, morphology, etymology, lexical range, generated answers, receipt exports, or MCP execution.
| Surface | Code | Current State | Allowed Response | Denied Response |
|---|---|---|---|---|
source_text | source_text_withheld_until_source_gates_close | withheld | Return source IDs, evidence IDs, route state, source gate, and withheld display status. | Do not quote, reconstruct, summarize, or export primary source text. |
translation_text | translation_unavailable_pending_audit | unavailable_pending_audit | Return translation status metadata and the relevant source or review gate. | Do not translate, gloss, paraphrase, or synthesize translation text. |
morphology_claim | morphology_claim_unavailable_pending_provider_audit | unavailable_pending_audit | Return provider provenance, parser metadata, and asserted_features_public false. | Do not assert parsed morphology features or lemma-click morphology facts. |
etymology_claim | etymology_claim_unavailable_pending_authority_review | unavailable_pending_audit | Return authority-source requirements, confidence state, and pending review gate. | Do not derive roots, cognates, histories, origins, or etymology statements. |
lexical_range_claim | lexical_range_unavailable_pending_audit | unavailable_pending_audit | Return lexical unavailable state and source pointer requirements. | Do not generate meanings, semantic ranges, synonyms, or cross-language equivalences. |
frequency_claim | frequency_fixture_scope_only | fixture_scope_only | Return count scope warnings and fixture-scope metadata only. | Do not claim corpus-wide frequency, KWIC completeness, collocation, or distribution. |
generated_answer | generated_answer_not_available_in_public_api | blocked | Return pointer-state metadata and blockers as the answer. | Do not return generated research prose, teaching synthesis, model output, or answer bodies. |
public_receipt_export | public_receipt_export_blocked_pending_policy | blocked | Return receipt_pointer with public_receipt_ready false, export_ready false, and blocked export_state. | Do not export receipt bodies, claim maps, content-hash bundles, public bundles, or download URLs. |
mcp_execution | mcp_documentation_only_not_callable | documentation_only_not_callable | Return /docs/mcp, zero callable tools, zero callable resources, no server URL, and activation gates. | Do not announce, call, simulate, or discover MCP tools, resources, transports, auth, or runtime endpoints. |
Future API Caveats
These docs clarify a pending-state contract. They do not introduce a new callable API surface, source lookup service, receipt export, or model path.
| Surface | Current Boundary | Future Gate | Refusal |
|---|---|---|---|
| API docs | Existing JSON paths are read-only, noindex, fixture-backed pending-state envelopes. | Any new API family or claim-bearing response requires a separate runtime packet, versioned contract, OpenAPI update, noindex tests, and source/receipt enforcement. | Docs text alone must not be read as permission to call a broader API, run acquisition, execute adapters, export receipts, or generate answers. |
| MCP docs | MCP remains documentation-only with no server URL, manifest, tools, resources, transport, auth contract, or runtime endpoint. | Any future MCP packet must mirror the public JSON envelope first and pass no-live-tools, transport, auth, and leak-guard tests. | Docs text alone must not be read as a callable MCP capability. |
| Receipt docs | Receipts are pointer-only and public_receipt_ready remains false. | Public receipt export requires public receipt policy, private-data scan, source gate closure, content hash review, and export tests. | Docs text alone must not be read as public receipt export permission. |
Request Envelope Examples
Current requests are plain read-only JSON reads. There is no prompt field, no request body, no source lookup instruction, and no model-facing command channel.
| Example | Request | Envelope | Agent Rule |
|---|---|---|---|
| Term pointer lookup Ask for the current fixture-backed term envelope without requesting a generated answer. | GET /api/public/terms/greek/psyche.json | | Parse the response envelope first; do not infer lexical range, morphology, etymology, translation, or frequency. |
| Reference parser unavailable state Ask whether a reference is recognized inside the P0 parser scope without asking Logoi to retrieve text. | GET /api/public/references/parse.json?ref=Iliad%201.6-10 | | Treat recognized_evidence_unavailable as a blocker, not as permission to fill the passage from memory. |
OpenAPI Artifact
/openapi.json lists the existing read-only fixture JSON paths and their shared pending-state response contract.
Every public JSON response must send X-Robots-Tag: noindex, nofollow.
Public JSON is an agent contract for pending fixture states, not an indexable public evidence surface.
Versioning Policy
Version labels are evidence contracts. They do not imply readiness for broader public claims.
| Surface | Version | Rule |
|---|---|---|
| Current fixture API | v0-fixture-read-only | Public fixture payloads expose a contract value before data fields; agents must branch on contract before parsing family data. |
| Readiness adapter | v1 | The readiness endpoint reports metadata readiness only and cannot execute acquisition, parsing, source export, or runtime crawl operations. |
| Future promotions | new contract required | Adding source text, translation, morphology, etymology, lexical range, frequency, generated answers, or receipt export requires a separate versioned contract and tests. |
Endpoint Header Contract
JSON endpoints are agent-facing contract artifacts. The header below is required even when the paired HTML route has a different page-level policy.
| Endpoint | Contract | Header | Expectation |
|---|---|---|---|
/openapi.json | openapi_discovery_document | X-Robots-Tag: noindex, nofollow | The discovery document itself is JSON for agents and must not become an indexable public evidence page. |
/api/v1/readiness.json | read_only_adapter_readiness | X-Robots-Tag: noindex, nofollow | Adapter readiness is metadata-only and must not invite crawling, source acquisition, or source text display. |
/api/public/terms/{language}/{lemma}.json | read_only_fixture_pending_state | X-Robots-Tag: noindex, nofollow | Term JSON can expose source and evidence pointers only; lexical, morphology, etymology, and frequency claims stay closed. |
/api/public/passages/{id}.json | read_only_fixture_pending_state | X-Robots-Tag: noindex, nofollow | Passage JSON can expose identifiers and withheld states only; source text and translation text stay absent. |
/api/public/sources/{id}.json | read_only_fixture_pending_state | X-Robots-Tag: noindex, nofollow | Source JSON can expose provenance, license, checksum, review, and blocker pointers only; source text and acquisition stay absent. |
/api/public/editions/{id}.json | read_only_fixture_pending_state | X-Robots-Tag: noindex, nofollow | Edition JSON can expose source binding, rights, checksum, and blocker pointers only; edition text and claim promotion stay absent. |
/api/public/receipts/{id}.json | read_only_fixture_pending_state | X-Robots-Tag: noindex, nofollow | Receipt JSON is pointer-only while public receipt export remains blocked. |
/api/public/journeys/{slug}.json | read_only_fixture_pending_state | X-Robots-Tag: noindex, nofollow | Journey JSON can expose scope and evidence pointers only; generated teaching and synthesis remain unavailable. |
/api/public/references/parse.json?ref={reference} | read_only_fixture_pending_state | X-Robots-Tag: noindex, nofollow | Reference parsing returns fixture matches or unavailable states; it must not invent passages or look up text. |
Robots And Noindex API Policy
API JSON is useful for clients, but it is not the public evidence layer. The policy below applies before endpoint-specific details.
- Every public JSON response, including /openapi.json, must emit X-Robots-Tag: noindex, nofollow.
- HTML documentation routes may remain indexable because they explain the contract; JSON endpoints remain machine artifacts, not public evidence pages.
- If a future JSON family backs an indexable HTML evidence page, the JSON response still stays noindex unless a later policy explicitly changes the API contract.
- Private, generated, query-shaped, and abuse-prone machine routes must stay absent or noindex,nofollow and outside sitemaps.
Public API Readiness Mirror
This mirror is the machine-readable summary that readiness and OpenAPI expose for external agents. It lists only the existing read-only JSON paths, their noindex header contract, and the surfaces that remain closed.
Agents may inspect endpoint templates, headers, IDs, pointers, states, and blockers; agents must stop before closed claim surfaces or runtime actions.
| Path | Contract | Status | Allowed Payload | Closed Surfaces |
|---|---|---|---|---|
GET /openapi.json | openapi_discovery_document | discovery_noindexX-Robots-Tag: noindex, nofollow | path templates, response contracts, headers, closed-surface policy, state vocabulary | source_text, translation, morphology, etymology, receipt_export, mcp_runtime |
GET /api/v1/readiness.json | read_only_adapter_readiness | adapter_readiness_onlyX-Robots-Tag: noindex, nofollow | adapter IDs, manifest IDs, snapshot IDs, checksum state, blocker IDs, operation states | adapter_execution, source_acquisition, crawl, source_text_export, receipt_export, model_call |
GET /api/public/terms/{language}/{lemma}.json | read_only_fixture_pending_state | read_only_fixtureX-Robots-Tag: noindex, nofollow | canonical URL, term ID, source IDs, evidence IDs, receipt pointer, states | source_text, translation, morphology, etymology, lexical_claims, frequency, receipt_export |
GET /api/public/passages/{id}.json | read_only_fixture_pending_state | read_only_fixtureX-Robots-Tag: noindex, nofollow | canonical URL, passage ID, source IDs, evidence IDs, receipt pointer, withheld states | source_text, translation, line_reconstruction, interpretive_gloss, receipt_export |
GET /api/public/sources/{id}.json | read_only_fixture_pending_state | read_only_fixtureX-Robots-Tag: noindex, nofollow | source ID, edition pointer, license state, checksum pointers, review state, blocker IDs | source_text, translation, source_acquisition, crawl, indexability_promotion, receipt_export |
GET /api/public/editions/{id}.json | read_only_fixture_pending_state | read_only_fixtureX-Robots-Tag: noindex, nofollow | edition ID, source binding, repository pointer, checksum pointers, rights state, blocker IDs | edition_text, source_text, translation, claim_promotion, indexability_promotion, receipt_export |
GET /api/public/receipts/{id}.json | read_only_fixture_pending_state | read_only_fixtureX-Robots-Tag: noindex, nofollow | receipt ID, scope IDs, source IDs, evidence IDs, pointer state, export blocker | receipt_export, claim_map, content_hash_export, public_bundle, private_data |
GET /api/public/journeys/{slug}.json | read_only_fixture_pending_state | read_only_fixtureX-Robots-Tag: noindex, nofollow | journey ID, source IDs, evidence IDs, receipt pointer, fixture scope, states | generated_teaching, interpretive_synthesis, receipt_export, private_memory, model_output |
GET /api/public/references/parse.json?ref={reference} | read_only_fixture_pending_state | read_only_fixtureX-Robots-Tag: noindex, nofollow | parser scope, normalized reference, matched fixture ID, unavailable state, blocker state | source_lookup, translation_lookup, morphology_lookup, etymology_lookup, passage_invention, mcp_runtime |
Non-capabilities: write_operations: false, source_acquisition: false, crawl: false, model_calls: false, mcp_runtime: false, receipt_export: false, source_text_export: false
Contract Hard Stops
Agents should treat these as active limits on the current public API contract, not as roadmap hints.
| Limit | API Rule |
|---|---|
no_model_calls | No model calls: The public JSON API returns checked-in fixture payloads from local builders; it does not call LLMs, embeddings, rerankers, retrieval services, or remote generation services. |
no_mcp_runtime | No MCP runtime: The callable machine surface is limited to the documented read-only JSON handlers; no MCP server URL, manifest, tool, or resource is published. |
no_source_text | No source text: Public JSON payloads expose source IDs, evidence IDs, and source metadata only; source text and translation text are withheld from the API contract. |
no_export_ready_receipts | No export-ready receipts: Receipts remain pointer-only: public_receipt_ready is false and export_state stays blocked_pending_public_receipt_policy. |
no_public_ready_claims | No public-ready claims: Payloads expose pending, unavailable, blocker, and fixture-scope states; lexical, morphology, etymology, translation, and generated teaching claims are not public-ready. |
Envelope Fields
Agents should parse these fields before reading family-specific data. Pending, unavailable, blocked, and fixture-scope markers control whether the payload can answer a request.
| Field | Requirement | Agent Use |
|---|---|---|
api_version | Identifies the fixture API version. | Do not merge payloads across versions without checking the contract value. |
contract | Must be read_only_fixture_pending_state for public fixture payloads. | Treat any different value as a separate contract, not as proof-ready evidence. |
status | Reports ok, not_found, missing_query, or malformed_query. | Use non-ok statuses as blockers; do not repair them with model memory. |
entity_type | Names the payload family: term, passage, source, edition, receipt, journey, reference, or adapter_readiness. | Route the payload to the matching parser and keep families separate. |
entity_id | Carries the stable fixture identifier when one exists. | Cite this ID for internal traceability, never as a public proof by itself. |
canonical_url | Points to the human canonical route when one exists. | Prefer this URL for navigation and citation pointers. |
source_ids | Lists source metadata pointers only. | Resolve as source metadata; do not infer source text, translation, or lexical claims. |
evidence_ids | Lists evidence rows attached to the fixture scope. | Use with states and blockers before treating any evidence as active. |
receipt_pointer | Carries a pointer-only receipt object or null. | Inspect receipt scope and export_state; do not export or reconstruct a public receipt. |
indexability | Carries declared/effective route state and the noindex, nofollow JSON robots rule. | Keep JSON payloads out of public indexing even when the paired HTML route later becomes indexable. |
states | Groups pending, unavailable, blocked, and fixture_scope markers. | Let these states control refusal and uncertainty handling. |
response_policy | Declares pointer-only behavior, noindex JSON headers, closed surfaces, and MCP non-operation. | Treat these policy fields as machine-readable refusals; do not request missing claim surfaces from another route. |
data | Contains family-specific metadata only. | Read only the allowed fields for the entity family. |
error | Explains not_found, missing_query, or malformed_query states. | Surface the blocker instead of fabricating a replacement answer. |
Payload Families
The public API families are read-only JSON envelopes. The allowed payload column names metadata that can be inspected; the closed payload column names claim surfaces that must remain refusals.
| Family | Status | Allowed Payload | Closed Payload |
|---|---|---|---|
term | Read-only fixture | term metadata, safe source metadata, evidence metadata, usage warning metadata, receipt pointer | lexical range claims, morphology parsed features, etymology statement text, translation text, source text |
passage | Read-only fixture | passage identifiers, canonical reference metadata, source IDs, evidence metadata, withheld display states | primary source text, translation text, interpretive gloss, line text reconstruction |
source | Read-only fixture | source identity, edition pointer, license state, checksum pointers, review state, blocker IDs | primary source text, translation text, source acquisition, runtime crawl, indexability promotion |
edition | Read-only fixture | edition identity, source binding, rights state, checksum pointers, review state, blocker IDs | edition text, primary source text, translation text, claim promotion, receipt export |
receipt | Read-only fixture | receipt scope, receipt pointer, source IDs, evidence IDs, blocked export state | public receipt export, content hash export, claim map export, private data |
journey | Read-only fixture | journey metadata, source IDs, evidence IDs, receipt pointer, pending state labels | generated lesson body, interpretive synthesis, public teaching artifact |
reference | Read-only fixture | parser scope, normalized reference, matched fixture ID when present, unavailable state when absent | passage invention, cross-corpus parsing, source text lookup, translation lookup |
adapter_readiness | Adapter readiness only | snapshot IDs, manifest IDs, checksum state, blockers, supported operations | adapter execution, source acquisition, source text export, runtime crawl |
Route Family Example Matrix
These examples are visible contract rows, not a broadened runtime. Every family stays pointer/state-only and carries the JSON noindex header.
| Family | Route / Example | Response State | Pointer Fields | Receipt Pointer | Noindex Header | Unavailable Example | Closed Surface |
|---|---|---|---|---|---|---|---|
| Term | /api/public/terms/{language}/{lemma}.json/api/public/terms/greek/psyche.json | pending + unavailable + blocked | canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states | Pointer-only when present; export_state remains blocked_pending_public_receipt_policy. | X-Robots-Tag: noindex, nofollow | Lexical range and translation stay unavailable_pending_audit. | No lexical range, morphology, etymology, translation, source text, frequency, answer body, or receipt export. |
| Passage | /api/public/passages/{id}.json/api/public/passages/iliad-1-1-5.json | audited HTML source display + public JSON withheld | canonical reference metadata, source_ids, evidence_ids, receipt_pointer, states, source_display_state/source_text_display | Pointer-only receipt context; no claim map or public bundle. | X-Robots-Tag: noindex, nofollow | The paired HTML route can show the audited source snapshot; public JSON returns withheld_in_public_json instead of text. | No JSON primary text, source lines, translation text, interpretive gloss, line reconstruction, or generated explanation. |
| Source | /api/public/sources/{id}.json/api/public/sources/grc-homer-archive-fixture-pending.json | source_pending + blocked | source identity, edition pointer, license state, checksum pointers, review state, source_display_state, blocker IDs | Pointer-only when present; no receipt body or export bundle. | X-Robots-Tag: noindex, nofollow | HTML display is separated from public JSON; source_display_state remains withheld_in_public_json. | No source text, translation text, source acquisition, crawl, indexability promotion, or receipt export. |
| Edition | /api/public/editions/{id}.json/api/public/editions/grc-homer-archive-fixture-pending.json | source_pending + blocked | edition identity, source binding, rights state, checksum pointers, review state, blocker IDs | Pointer-only when present; no receipt body or claim map. | X-Robots-Tag: noindex, nofollow | Edition text, source text, and translation remain withheld. | No edition text, source text, translation text, claim promotion, public evidence promotion, or receipt export. |
| Receipt | /api/public/receipts/{id}.json/api/public/receipts/soul-word-journey-v0.json | pending + blocked + fixture_scope | receipt scope, source_ids, evidence_ids, pointer status, export_state | The receipt itself is returned only as state metadata; public_receipt_ready stays false. | X-Robots-Tag: noindex, nofollow | Export is blocked until public receipt policy, leak guard, and promotion gates pass. | No receipt body, content-hash export, evidence crosswalk, public bundle, or private data. |
| Journey | /api/public/journeys/{slug}.json/api/public/journeys/soul-word.json | pending + fixture_scope | journey metadata, source_ids, evidence_ids, receipt_pointer, not-proven states | Journey links to a blocked receipt pointer only. | X-Robots-Tag: noindex, nofollow | Generated teaching, synthesis, and public-ready interpretive claims stay unavailable. | No generated lesson body, synthesis, teaching artifact, private memory, or model output. |
| Reference parser | /api/public/references/parse.json?ref={reference}/api/public/references/parse.json?ref=Iliad%201.6-10 | recognized_evidence_unavailable | parser scope, normalized reference, matched fixture ID or unavailable blocker | None for unavailable references. | X-Robots-Tag: noindex, nofollow | Recognized references outside the first fixture return matched_passage_id null. | No passage invention, source lookup, translation lookup, citation expansion, or cross-corpus parsing. |
| Readiness adapter | /api/v1/readiness.json/api/v1/readiness.json | read_only_adapter_readiness | adapter IDs, manifest IDs, snapshot IDs, checksum state, blockers, supported operation states | Null; readiness cannot export receipts or evidence bundles. | X-Robots-Tag: noindex, nofollow | Disabled operation rows report source display, translation, morphology, etymology, lexical range, and search as unavailable. | No adapter execution, source acquisition, crawl, primary text export, model call, or live research operation. |
Response State Matrix
Agents must read these states as control signals. They are not prompts to complete missing evidence.
| State | Meaning | Example | Agent Action |
|---|---|---|---|
pending | The row exists but one or more source, receipt, review, or promotion gates are still open. | route:word-greek-psyche:source_gate_open | Return the pending state and stop before making a public claim. |
unavailable | The request is recognized but the requested evidence surface is not available in the current fixture. | recognized_evidence_unavailable | Explain the unavailable state; do not fill the gap from memory or a model. |
blocked | A named gate forbids promotion or export. | blocked_public_export / gate:receipt-policy | Surface the blocker and do not retry through another endpoint. |
fixture_scope | The value is useful for product proof only and cannot be generalized to corpus evidence. | evidence:fixture-scope-warning | Keep the scope warning attached to any downstream summary. |
Response State Catalog
The catalog below is the branch-level state vocabulary for future agents. A state can authorize pointer inspection, but it cannot authorize source display, claim promotion, receipt export, or runtime execution.
| State | Family | Meaning | Allowed Pointer Result | Agent Action | Closed Surfaces | Example Routes |
|---|---|---|---|---|---|---|
ok | success | The fixture handler found a row and returned the current pointer-state envelope. | Read contract, canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states, and safe metadata. | Continue only as far as the states and response_policy allow. | source_text, translation_text, generated_answer, public_receipt_export | /api/public/terms/greek/psyche.json/api/public/passages/iliad-1-1-5.json |
source_pending | pending | The page or entity is recognized, but source, license, checksum, passage, receipt, or review gates remain open. | Return source IDs, evidence IDs, route gate IDs, and withheld display states. | State the blocker and stop before reconstructing or promoting evidence. | source_text, translation_text, line_reconstruction, public_ready_claim | /api/public/passages/iliad-1-1-5.json |
unavailable_pending_audit | unavailable | The requested claim family is known to the contract but is unavailable until a source audit and review gate pass. | Return unavailable status metadata and the relevant source or evidence pointer. | Report the unavailable state as the answer; do not fill the field from memory, model output, or a different route. | morphology_claim, etymology_claim, lexical_range_claim, translation_text, frequency_claim | /api/public/terms/greek/psyche.json |
recognized_evidence_unavailable | unavailable | The parser recognized the reference shape, but no first-slice fixture passage is available for that range. | Return parser scope, normalized reference, canonical work URL, source IDs, and unavailable blocker IDs. | Do not invent the passage, expand the citation, look up source text, or synthesize a translation. | passage_invention, source_lookup, translation_lookup, cross_corpus_expansion | /api/public/references/parse.json?ref=Iliad%201.6-10 |
blocked_public_export | blocked | A receipt or export gate explicitly forbids public bundle output. | Return receipt_pointer, public_receipt_ready false, export_ready false, export_state, source IDs, and evidence IDs. | Treat the receipt as a blocker ledger only. | receipt_body, claim_map, content_hash_export, public_bundle, private_data | /api/public/receipts/soul-word-journey-v0.json |
missing_query | error | A required query field is absent. | Return contract, status, error text, noindex header, empty pointers, and blocked state markers. | Ask for the missing input; do not guess a reference. | fallback_lookup, source_lookup, generated_answer | /api/public/references/parse.json |
malformed_query | error | The input is present but outside the parser contract. | Return contract, status, parser scope, noindex header, empty pointers, and malformed state markers. | Report parser scope and request a supported reference shape. | best_effort_parse, cross_corpus_expansion, citation_expansion | /api/public/references/parse.json?ref=not-a-supported-reference |
not_found | error | The route family exists, but the requested fixture row is absent. | Return contract, status, noindex header, null entity_id, empty pointers, and not-found state markers. | Surface the not_found state instead of creating a substitute fixture. | entity_invention, source_acquisition, runtime_search | /api/public/terms/greek/not-in-fixture.json |
adapter_not_ready | error | Readiness metadata failed a manifest, checksum, snapshot, or blocker check. | Return adapter metadata, blocker IDs, disabled operation states, and noindex header. | Report readiness failure; do not run acquisition, crawl, repair, or fallback source loading. | adapter_execution, source_acquisition, crawl, primary_text_export | /api/v1/readiness.json |
documentation_only_not_callable | non_operational | The MCP shape is a documentation contract only and has no runtime transport. | Return zero callable tools, zero callable resources, no server URL, no manifest, and activation gates. | Use it only as a planning constraint for a later explicitly authorized MCP packet. | tool_call, resource_read, transport, auth_token_contract, runtime_endpoint | /docs/mcp |
Agent State Examples
These examples name the exact machine states external tools should preserve. They clarify current envelopes without adding endpoints, executable operations, or export-ready payloads.
| Example | Route | State | Noindex | Allowed | Absent | Agent Action |
|---|---|---|---|---|---|---|
| Source-pending evidence route | /api/public/passages/iliad-1-1-5.json | withheld_in_public_json | X-Robots-Tag: noindex, nofollow | canonical reference, source_ids, evidence_ids, receipt_pointer, indexability, states, source_display_state/source_text_display | primary text, translation text, line reconstruction, generated explanation | Return the HTML/API separation and do not reconstruct or quote source text from JSON. |
| Unavailable term claim fields | /api/public/terms/greek/psyche.json | unavailable_pending_audit | X-Robots-Tag: noindex, nofollow | term metadata, source pointers, evidence pointers, closed-field statuses | lexical range claim, morphology claim, etymology statement, translation text, corpus frequency | Surface unavailable_pending_audit and refuse to fill the claim gap. |
| Blocked receipt export | /api/public/receipts/soul-word-journey-v0.json | blocked_public_export | X-Robots-Tag: noindex, nofollow | receipt_pointer, public_receipt_ready false, export_state, source_ids, evidence_ids | receipt body, claim map, content hash export, public bundle, private data | Treat the receipt as a pointer-only blocker ledger. |
| Readiness metadata | /api/v1/readiness.json | read_only_adapter_readiness | X-Robots-Tag: noindex, nofollow | adapter IDs, manifest IDs, snapshot IDs, checksum state, blocker IDs | adapter execution, source acquisition, crawl, export, model call | Read existing readiness fields only; no operation is triggered. |
Error And Refusal Examples
Error examples remain pointer-first. They expose status, noindex, empty or withheld pointers, and agent action only; they do not start recovery jobs, source lookup, public receipt export, or fallback generation.
| Example | Request | Status | Header | Pointer Result | Agent Action |
|---|---|---|---|---|---|
reference_missing_query | GET /api/public/references/parse.json | 400 missing_queryread_only_fixture_pending_state | X-Robots-Tag: noindex, nofollow | | Ask for a supported reference string; do not infer one. |
reference_malformed_query | GET /api/public/references/parse.json?ref=not-a-supported-reference | 400 malformed_queryread_only_fixture_pending_state | X-Robots-Tag: noindex, nofollow | | Return parser scope and request a supported Iliad reference shape. |
term_not_found | GET /api/public/terms/greek/not-in-fixture.json | 404 not_foundread_only_fixture_pending_state | X-Robots-Tag: noindex, nofollow | | Return not_found; do not create a replacement term row or source claim. |
readiness_adapter_not_ready | GET /api/v1/readiness.json | 503 adapter_not_readyread_only_adapter_readiness | X-Robots-Tag: noindex, nofollow | | Report the failed gate; do not execute adapters, crawl, repair, or export source data. |
What API Does Not Yet Do
Closed surfaces stay closed even when a route family has an example row.
| Surface | Current State | Does Not Do |
|---|---|---|
| Source and translation content | withheld or unavailable_pending_audit | No API response returns primary text, translation text, or line reconstruction. |
| Philological claims | metadata pointers and blocker states only | No response asserts morphology, etymology, lexical range, translation, or corpus frequency. |
| Receipts | pointer_only with public_receipt_ready false | No receipt body, export-ready payload, claim map, downloadable bundle, or public export URL exists. |
| Execution | read-only JSON handlers | No write endpoint, source acquisition, crawl, model call, retrieval job, private memory action, or tool execution exists. |
| MCP | non-operational | No MCP server URL, manifest, callable tool, callable resource, transport, or auth token contract exists. |
Pending Envelope Examples
These examples describe how pending, unavailable, blocked, and fixture-scope states control agent behavior. They are excerpts, not proof-ready evidence.
| Example | Request | State Families | Closed Claim Handling |
|---|---|---|---|
Term pending enveloperead_only_fixture_pending_state | GET /api/public/terms/greek/psyche.json | pending, unavailable, blocked, fixture_scope | Return source and evidence pointers with pending states; refuse lexical range, morphology, etymology, translation, and frequency claims. |
Passage pointer enveloperead_only_fixture_pending_state | GET /api/public/passages/iliad-1-1-5.json | pending, blocked | Return canonical identifiers, source IDs, and withheld display states; refuse primary text, translation text, and line reconstruction. |
Source provenance enveloperead_only_fixture_pending_state | GET /api/public/sources/grc-homer-archive-fixture-pending.json | pending, unavailable, blocked | Return source provenance, review, checksum, and blocker pointers; refuse source text, acquisition, crawl, and claim promotion. |
Edition provenance enveloperead_only_fixture_pending_state | GET /api/public/editions/grc-homer-archive-fixture-pending.json | pending, unavailable, blocked | Return edition identity, source binding, rights, checksum, and blocker pointers; refuse edition text, source text, translation, and claim promotion. |
Reference unavailable enveloperead_only_fixture_pending_state | GET /api/public/references/parse.json?ref=Iliad%201.6-10 | unavailable, blocked | Return the recognized work pointer and unavailable state; refuse passage invention, source lookup, and translation lookup. |
Receipt pointer enveloperead_only_fixture_pending_state | GET /api/public/receipts/soul-word-journey-v0.json | pending, blocked, fixture_scope | Return receipt scope and pointer metadata; refuse content hash, claim map, public export, and private data. |
Adapter readiness enveloperead_only_adapter_readiness | GET /api/v1/readiness.json | blocked | Return source snapshot readiness metadata only; refuse adapter execution, source acquisition, crawling, and source text export. |
Blocked And Pending Response Contract
Blocked and pending states are first-class responses. They are not incomplete answers waiting for an agent to complete them.
{
"contract": "read_only_fixture_pending_state",
"status": "ok",
"entity_type": "reference",
"states": {
"pending": [
"route:text-greek-homer-iliad:source_gate_open"
],
"unavailable": [
"evidence:blocker:source-review"
],
"blocked": [
"gate:homer-source-review"
],
"fixture_scope": []
},
"response_policy": {
"pointer_only": true,
"source_display_state": "withheld_in_public_json",
"primary_text_status": "withheld",
"translation_status": "withheld",
"public_receipt_export": "blocked_pending_public_receipt_policy",
"claim_promotion": "blocked_pending_source_receipt_and_review_gates",
"mcp": {
"operational": false,
"server_url": null,
"callable_tools": 0,
"callable_resources": 0,
"runtime_endpoint": null
}
},
"agent_action": "Return the blocker and source_display_state, then stop. The audited HTML route may display source text, but public JSON must not generate, quote, or export source text, translation, morphology, etymology, lexical range, frequency, or an answer body."
} Pointer-First Agent Recipes
External clients should start with pointer fields and state fields, then stop when an envelope says source_pending, unavailable, blocked, or noindex. These recipes do not add endpoints or operational behavior.
| Recipe | Request | Status | Read First | Preserve States | Agent Action | Never |
|---|---|---|---|---|---|---|
Lemma Lookuplemma_lookup | GET /api/public/terms/greek/psyche.json | read_only_fixture_pending_state | contract, canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states | source_pending, unavailable_pending_audit, blocked_public_export, fixture_scope | Return the lemma identity and pointer state. If lexical, morphology, etymology, translation, or frequency fields are unavailable, surface that state as the answer. | infer lexical range, assert morphology, invent etymology, translate from memory, promote fixture counts |
Passage Lookuppassage_lookup | GET /api/public/passages/iliad-1-1-5.json | source_pending_pointer_only | contract, canonical_url, source_ids, evidence_ids, receipt_pointer, indexability, states | source_pending, blocked, withheld, noindex | Return the canonical passage pointer and withheld display state. Do not reconstruct lines, translations, or commentary from outside the envelope. | return primary text, return translation text, fill missing lines, create interpretive gloss, expand citation scope |
Receipt Pointer Lookupreceipt_pointer_lookup | GET /api/public/receipts/soul-word-journey-v0.json | blocked_public_export_pointer_only | contract, receipt_pointer, source_ids, evidence_ids, indexability, states | blocked_pending_public_receipt_policy, public_receipt_ready:false, export_ready:false | Use the receipt route as a state pointer only. Preserve public_receipt_ready false and export_state blocked until a separate receipt policy promotes it. | export receipt body, rebuild claim map, emit content hash bundle, link a public download, include private data |
Readiness Checkreadiness_check | GET /api/v1/readiness.json | read_only_adapter_readiness | contract, status, indexability, states.blocked, readiness.adapters, data.supported_operations | source_text_export_unavailable, operation_disabled_until_separate_gate, noindex | Treat readiness as metadata about existing fixtures and adapters. A ready metadata row does not authorize acquisition, crawling, source display, receipt export, or claim promotion. | execute adapter, start source acquisition, crawl, export primary text, retry blocked operations through MCP |
Lemma Lookup Skeleton
{
"api_version": "v0-fixture-read-only",
"contract": "read_only_fixture_pending_state",
"status": "ok",
"entity_type": "term",
"entity_id": "term:grc:psyche",
"canonical_url": "https://logoi.health/words/greek/psyche",
"source_ids": [
"source:lexicon:greek-fallback-pending",
"source:grc:homer-archive-fixture-pending",
"source:etymology:greek-beekes-2010-pending",
"source:etymology:greek-chantraine-pending",
"source:etymology:greek-frisk-pending",
"source:etymology:greek-lsj-fallback-pending",
"source:lexicon:hebrew-fallback-pending",
"source:lexicon:latin-fallback-pending",
"source:grc:homer-morphology-provider-pending",
"source:etymology:english-oed-pending",
"source:etymology:english-med-pending",
"source:etymology:english-bosworth-toller-pending",
"source:etymology:english-germanic-authority-pending",
"source:etymology:hebrew-halot-pending",
"source:etymology:hebrew-dch-pending",
"source:etymology:hebrew-bdb-fallback-pending",
"source:etymology:latin-de-vaan-pending",
"source:etymology:latin-ernout-meillet-pending",
"source:etymology:latin-walde-hofmann-pending",
"source:etymology:latin-lewis-short-fallback-pending",
"source:receipt:soul-word-journey-v0"
],
"evidence_ids": [
"evidence:term:state-unavailable",
"evidence:occurrence:psychas-source-pending",
"evidence:morphology:psychas-provider-pending",
"evidence:etymology:authorities-unavailable",
"evidence:kwic:fixture-scope",
"evidence:chart:fixture-scope",
"evidence:journey:not-proven"
],
"receipt_pointer": {
"id": "receipt:word:grc-psyche-v0",
"slug": "grc-psyche-v0",
"canonical_path": "/receipts/soul-word-journey-v0",
"canonical_url": "https://logoi.health/receipts/soul-word-journey-v0",
"version": "v0-fixture",
"pointer_only": true,
"public_receipt_ready": false,
"export_ready": false,
"export_state": "blocked_pending_public_receipt_policy",
"public_export_url": null,
"closed_fields": [
"receipt_body",
"evidence_crosswalk",
"public_export_bundle",
"private_data"
],
"indexability": "noindex,follow"
},
"indexability": {
"declared": "noindex,follow",
"effective": "noindex,follow",
"robots": "noindex, nofollow",
"route_path": "/words/greek/psyche",
"source_gate": "source_audit_required",
"blockers": [
"gate:lexical-source-review",
"gate:morphology-provider-review",
"gate:etymology-authority-review"
]
},
"states": {
"pending": [
"evidence:term:state-unavailable",
"evidence:occurrence:psychas-source-pending",
"evidence:morphology:psychas-provider-pending",
"route:word-greek-psyche:source_gate_open"
],
"unavailable": [
"evidence:etymology:authorities-unavailable"
],
"blocked": [
"gate:lexical-source-review",
"gate:morphology-provider-review",
"gate:etymology-authority-review",
"receipt:word:grc-psyche-v0:public_receipt_export_blocked"
],
"fixture_scope": [
"evidence:kwic:fixture-scope",
"evidence:chart:fixture-scope"
]
},
"response_policy": {
"pointer_only": true,
"json_noindex": {
"header": "X-Robots-Tag",
"value": "noindex, nofollow"
},
"source_ids": "metadata_pointers_only",
"evidence_ids": "state_and_scope_pointers_only",
"receipt_pointer": "metadata_pointer_only_no_public_export",
"primary_text_status": "withheld",
"translation_status": "withheld",
"public_receipt_export": "blocked_pending_public_receipt_policy",
"claim_promotion": "blocked_pending_source_receipt_and_review_gates",
"mcp": {
"operational": false,
"server_url": null,
"callable_tools": 0,
"callable_resources": 0,
"runtime_endpoint": null
},
"refused_surfaces": [
"source_text",
"translation_text",
"morphology_claim",
"etymology_claim",
"lexical_range_claim",
"frequency_claim",
"interpretive_synthesis",
"model_output",
"tool_execution",
"public_receipt_export"
],
"closed_surface_denials": [
{
"surface": "source_text",
"denial_code": "source_text_withheld_until_source_gates_close",
"current_state": "withheld",
"allowed_response": "Return source IDs, evidence IDs, route state, source gate, and withheld display status.",
"denied_response": "Do not quote, reconstruct, summarize, or export primary source text.",
"closed_objects": [
"primary content payload",
"line content payload",
"text export payload",
"local snapshot locator"
]
},
{
"surface": "translation_text",
"denial_code": "translation_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return translation status metadata and the relevant source or review gate.",
"denied_response": "Do not translate, gloss, paraphrase, or synthesize translation text.",
"closed_objects": [
"translation content payload",
"gloss content payload",
"semantic rendering payload"
]
},
{
"surface": "morphology_claim",
"denial_code": "morphology_claim_unavailable_pending_provider_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return provider provenance, parser metadata, and asserted_features_public false.",
"denied_response": "Do not assert parsed morphology features or lemma-click morphology facts.",
"closed_objects": [
"feature assertion payload",
"public morphology payload",
"lemma-click fact payload"
]
},
{
"surface": "etymology_claim",
"denial_code": "etymology_claim_unavailable_pending_authority_review",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return authority-source requirements, confidence state, and pending review gate.",
"denied_response": "Do not derive roots, cognates, histories, origins, or etymology statements.",
"closed_objects": [
"origin statement payload",
"root assertion payload",
"cognate assertion payload",
"history narrative payload"
]
},
{
"surface": "lexical_range_claim",
"denial_code": "lexical_range_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return lexical unavailable state and source pointer requirements.",
"denied_response": "Do not generate meanings, semantic ranges, synonyms, or cross-language equivalences.",
"closed_objects": [
"semantic range payload",
"meaning synthesis payload",
"synonym payload",
"cross-language equivalence payload"
]
},
{
"surface": "frequency_claim",
"denial_code": "frequency_fixture_scope_only",
"current_state": "fixture_scope_only",
"allowed_response": "Return count scope warnings and fixture-scope metadata only.",
"denied_response": "Do not claim corpus-wide frequency, KWIC completeness, collocation, or distribution.",
"closed_objects": [
"corpus count payload",
"complete KWIC payload",
"collocation payload",
"distribution payload"
]
},
{
"surface": "generated_answer",
"denial_code": "generated_answer_not_available_in_public_api",
"current_state": "blocked",
"allowed_response": "Return pointer-state metadata and blockers as the answer.",
"denied_response": "Do not return generated research prose, teaching synthesis, model output, or answer bodies.",
"closed_objects": [
"generated prose payload",
"model output payload",
"teaching synthesis payload",
"answer body payload"
]
},
{
"surface": "public_receipt_export",
"denial_code": "public_receipt_export_blocked_pending_policy",
"current_state": "blocked",
"allowed_response": "Return receipt_pointer with public_receipt_ready false, export_ready false, and blocked export_state.",
"denied_response": "Do not export receipt bodies, claim maps, content-hash bundles, public bundles, or download URLs.",
"closed_objects": [
"receipt body payload",
"claim map payload",
"content hash bundle",
"public bundle",
"download URL"
]
},
{
"surface": "mcp_execution",
"denial_code": "mcp_documentation_only_not_callable",
"current_state": "documentation_only_not_callable",
"allowed_response": "Return /docs/mcp, zero callable tools, zero callable resources, no server URL, and activation gates.",
"denied_response": "Do not announce, call, simulate, or discover MCP tools, resources, transports, auth, or runtime endpoints.",
"closed_objects": [
"server URL",
"tool inventory",
"resource inventory",
"tool-call path",
"resource-read path",
"runtime endpoint"
]
}
]
}
} Passage Lookup Skeleton
{
"api_version": "v0-fixture-read-only",
"contract": "read_only_fixture_pending_state",
"status": "ok",
"entity_type": "passage",
"entity_id": "passage:iliad-1-1-5",
"canonical_url": "https://logoi.health/passages/iliad-1-1-5",
"source_ids": [
"source:grc:homer-archive-fixture-pending",
"source:logoi:gloss-draft",
"source:grc:homer-morphology-provider-pending"
],
"evidence_ids": [
"evidence:homer-passage-source-pending",
"evidence:occurrence:psychas-source-pending",
"evidence:gloss:pending",
"evidence:kwic:fixture-scope",
"evidence:morphology:psychas-provider-pending"
],
"receipt_pointer": {
"id": "receipt:passage:iliad-1-1-5-v0",
"slug": "iliad-1-1-5-v0",
"canonical_path": "/receipts/soul-word-journey-v0",
"canonical_url": "https://logoi.health/receipts/soul-word-journey-v0",
"version": "v0-fixture",
"pointer_only": true,
"public_receipt_ready": false,
"export_ready": false,
"export_state": "blocked_pending_public_receipt_policy",
"public_export_url": null,
"closed_fields": [
"receipt_body",
"evidence_crosswalk",
"public_export_bundle",
"private_data"
],
"indexability": "noindex,follow"
},
"indexability": {
"declared": "noindex,follow",
"effective": "noindex,follow",
"robots": "noindex, nofollow",
"route_path": "/passages/iliad-1-1-5",
"source_gate": "source_audit_required",
"blockers": []
},
"states": {
"pending": [
"evidence:homer-passage-source-pending",
"evidence:occurrence:psychas-source-pending",
"evidence:gloss:pending",
"evidence:morphology:psychas-provider-pending"
],
"unavailable": [],
"blocked": [
"receipt:passage:iliad-1-1-5-v0:public_receipt_export_blocked"
],
"fixture_scope": [
"evidence:kwic:fixture-scope"
]
},
"response_policy": {
"pointer_only": true,
"json_noindex": {
"header": "X-Robots-Tag",
"value": "noindex, nofollow"
},
"source_ids": "metadata_pointers_only",
"evidence_ids": "state_and_scope_pointers_only",
"receipt_pointer": "metadata_pointer_only_no_public_export",
"primary_text_status": "withheld",
"translation_status": "withheld",
"public_receipt_export": "blocked_pending_public_receipt_policy",
"claim_promotion": "blocked_pending_source_receipt_and_review_gates",
"mcp": {
"operational": false,
"server_url": null,
"callable_tools": 0,
"callable_resources": 0,
"runtime_endpoint": null
},
"refused_surfaces": [
"source_text",
"translation_text",
"morphology_claim",
"etymology_claim",
"lexical_range_claim",
"frequency_claim",
"interpretive_synthesis",
"model_output",
"tool_execution",
"public_receipt_export"
],
"closed_surface_denials": [
{
"surface": "source_text",
"denial_code": "source_text_withheld_until_source_gates_close",
"current_state": "withheld",
"allowed_response": "Return source IDs, evidence IDs, route state, source gate, and withheld display status.",
"denied_response": "Do not quote, reconstruct, summarize, or export primary source text.",
"closed_objects": [
"primary content payload",
"line content payload",
"text export payload",
"local snapshot locator"
]
},
{
"surface": "translation_text",
"denial_code": "translation_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return translation status metadata and the relevant source or review gate.",
"denied_response": "Do not translate, gloss, paraphrase, or synthesize translation text.",
"closed_objects": [
"translation content payload",
"gloss content payload",
"semantic rendering payload"
]
},
{
"surface": "morphology_claim",
"denial_code": "morphology_claim_unavailable_pending_provider_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return provider provenance, parser metadata, and asserted_features_public false.",
"denied_response": "Do not assert parsed morphology features or lemma-click morphology facts.",
"closed_objects": [
"feature assertion payload",
"public morphology payload",
"lemma-click fact payload"
]
},
{
"surface": "etymology_claim",
"denial_code": "etymology_claim_unavailable_pending_authority_review",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return authority-source requirements, confidence state, and pending review gate.",
"denied_response": "Do not derive roots, cognates, histories, origins, or etymology statements.",
"closed_objects": [
"origin statement payload",
"root assertion payload",
"cognate assertion payload",
"history narrative payload"
]
},
{
"surface": "lexical_range_claim",
"denial_code": "lexical_range_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return lexical unavailable state and source pointer requirements.",
"denied_response": "Do not generate meanings, semantic ranges, synonyms, or cross-language equivalences.",
"closed_objects": [
"semantic range payload",
"meaning synthesis payload",
"synonym payload",
"cross-language equivalence payload"
]
},
{
"surface": "frequency_claim",
"denial_code": "frequency_fixture_scope_only",
"current_state": "fixture_scope_only",
"allowed_response": "Return count scope warnings and fixture-scope metadata only.",
"denied_response": "Do not claim corpus-wide frequency, KWIC completeness, collocation, or distribution.",
"closed_objects": [
"corpus count payload",
"complete KWIC payload",
"collocation payload",
"distribution payload"
]
},
{
"surface": "generated_answer",
"denial_code": "generated_answer_not_available_in_public_api",
"current_state": "blocked",
"allowed_response": "Return pointer-state metadata and blockers as the answer.",
"denied_response": "Do not return generated research prose, teaching synthesis, model output, or answer bodies.",
"closed_objects": [
"generated prose payload",
"model output payload",
"teaching synthesis payload",
"answer body payload"
]
},
{
"surface": "public_receipt_export",
"denial_code": "public_receipt_export_blocked_pending_policy",
"current_state": "blocked",
"allowed_response": "Return receipt_pointer with public_receipt_ready false, export_ready false, and blocked export_state.",
"denied_response": "Do not export receipt bodies, claim maps, content-hash bundles, public bundles, or download URLs.",
"closed_objects": [
"receipt body payload",
"claim map payload",
"content hash bundle",
"public bundle",
"download URL"
]
},
{
"surface": "mcp_execution",
"denial_code": "mcp_documentation_only_not_callable",
"current_state": "documentation_only_not_callable",
"allowed_response": "Return /docs/mcp, zero callable tools, zero callable resources, no server URL, and activation gates.",
"denied_response": "Do not announce, call, simulate, or discover MCP tools, resources, transports, auth, or runtime endpoints.",
"closed_objects": [
"server URL",
"tool inventory",
"resource inventory",
"tool-call path",
"resource-read path",
"runtime endpoint"
]
}
]
},
"data": {
"source_display_state": "withheld_in_public_json",
"translation_display_state": "withheld_pending_translation_review"
}
} Receipt Pointer Lookup Skeleton
{
"api_version": "v0-fixture-read-only",
"contract": "read_only_fixture_pending_state",
"status": "ok",
"entity_type": "receipt",
"entity_id": "receipt:soul-word-journey-v0",
"canonical_url": "https://logoi.health/receipts/soul-word-journey-v0",
"source_ids": [
"source:grc:homer-archive-fixture-pending",
"source:receipt:soul-word-journey-v0",
"source:etymology:english-oed-pending",
"source:etymology:english-med-pending",
"source:etymology:english-bosworth-toller-pending",
"source:etymology:english-germanic-authority-pending",
"source:etymology:hebrew-halot-pending",
"source:etymology:hebrew-dch-pending",
"source:etymology:hebrew-bdb-fallback-pending",
"source:etymology:greek-beekes-2010-pending",
"source:etymology:greek-chantraine-pending",
"source:etymology:greek-frisk-pending",
"source:etymology:greek-lsj-fallback-pending",
"source:etymology:latin-de-vaan-pending",
"source:etymology:latin-ernout-meillet-pending",
"source:etymology:latin-walde-hofmann-pending",
"source:etymology:latin-lewis-short-fallback-pending"
],
"evidence_ids": [
"evidence:journey:not-proven",
"evidence:homer-passage-source-pending",
"evidence:occurrence:psychas-source-pending",
"evidence:etymology:authorities-unavailable",
"evidence:blocker:source-review"
],
"receipt_pointer": {
"id": "receipt:soul-word-journey-v0",
"slug": "soul-word-journey-v0",
"canonical_path": "/receipts/soul-word-journey-v0",
"canonical_url": "https://logoi.health/receipts/soul-word-journey-v0",
"version": "v0-fixture",
"pointer_only": true,
"public_receipt_ready": false,
"export_ready": false,
"export_state": "blocked_pending_public_receipt_policy",
"public_export_url": null,
"closed_fields": [
"receipt_body",
"evidence_crosswalk",
"public_export_bundle",
"private_data"
],
"indexability": "noindex,follow"
},
"indexability": {
"declared": "noindex,follow",
"effective": "noindex,follow",
"robots": "noindex, nofollow",
"route_path": "/journeys/soul-word",
"source_gate": "source_audit_required",
"blockers": [
"gate:receipt-policy",
"gate:hebrew-source-review",
"gate:greek-nt-source-review",
"gate:latin-source-review",
"gate:english-source-review"
]
},
"states": {
"pending": [
"evidence:homer-passage-source-pending",
"evidence:occurrence:psychas-source-pending",
"route:journey-soul-word:source_gate_open"
],
"unavailable": [
"evidence:etymology:authorities-unavailable"
],
"blocked": [
"evidence:blocker:source-review",
"gate:receipt-policy",
"gate:hebrew-source-review",
"gate:greek-nt-source-review",
"gate:latin-source-review",
"gate:english-source-review",
"receipt:soul-word-journey-v0:public_receipt_export_blocked"
],
"fixture_scope": []
},
"response_policy": {
"pointer_only": true,
"json_noindex": {
"header": "X-Robots-Tag",
"value": "noindex, nofollow"
},
"source_ids": "metadata_pointers_only",
"evidence_ids": "state_and_scope_pointers_only",
"receipt_pointer": "metadata_pointer_only_no_public_export",
"primary_text_status": "withheld",
"translation_status": "withheld",
"public_receipt_export": "blocked_pending_public_receipt_policy",
"claim_promotion": "blocked_pending_source_receipt_and_review_gates",
"mcp": {
"operational": false,
"server_url": null,
"callable_tools": 0,
"callable_resources": 0,
"runtime_endpoint": null
},
"refused_surfaces": [
"source_text",
"translation_text",
"morphology_claim",
"etymology_claim",
"lexical_range_claim",
"frequency_claim",
"interpretive_synthesis",
"model_output",
"tool_execution",
"public_receipt_export"
],
"closed_surface_denials": [
{
"surface": "source_text",
"denial_code": "source_text_withheld_until_source_gates_close",
"current_state": "withheld",
"allowed_response": "Return source IDs, evidence IDs, route state, source gate, and withheld display status.",
"denied_response": "Do not quote, reconstruct, summarize, or export primary source text.",
"closed_objects": [
"primary content payload",
"line content payload",
"text export payload",
"local snapshot locator"
]
},
{
"surface": "translation_text",
"denial_code": "translation_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return translation status metadata and the relevant source or review gate.",
"denied_response": "Do not translate, gloss, paraphrase, or synthesize translation text.",
"closed_objects": [
"translation content payload",
"gloss content payload",
"semantic rendering payload"
]
},
{
"surface": "morphology_claim",
"denial_code": "morphology_claim_unavailable_pending_provider_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return provider provenance, parser metadata, and asserted_features_public false.",
"denied_response": "Do not assert parsed morphology features or lemma-click morphology facts.",
"closed_objects": [
"feature assertion payload",
"public morphology payload",
"lemma-click fact payload"
]
},
{
"surface": "etymology_claim",
"denial_code": "etymology_claim_unavailable_pending_authority_review",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return authority-source requirements, confidence state, and pending review gate.",
"denied_response": "Do not derive roots, cognates, histories, origins, or etymology statements.",
"closed_objects": [
"origin statement payload",
"root assertion payload",
"cognate assertion payload",
"history narrative payload"
]
},
{
"surface": "lexical_range_claim",
"denial_code": "lexical_range_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return lexical unavailable state and source pointer requirements.",
"denied_response": "Do not generate meanings, semantic ranges, synonyms, or cross-language equivalences.",
"closed_objects": [
"semantic range payload",
"meaning synthesis payload",
"synonym payload",
"cross-language equivalence payload"
]
},
{
"surface": "frequency_claim",
"denial_code": "frequency_fixture_scope_only",
"current_state": "fixture_scope_only",
"allowed_response": "Return count scope warnings and fixture-scope metadata only.",
"denied_response": "Do not claim corpus-wide frequency, KWIC completeness, collocation, or distribution.",
"closed_objects": [
"corpus count payload",
"complete KWIC payload",
"collocation payload",
"distribution payload"
]
},
{
"surface": "generated_answer",
"denial_code": "generated_answer_not_available_in_public_api",
"current_state": "blocked",
"allowed_response": "Return pointer-state metadata and blockers as the answer.",
"denied_response": "Do not return generated research prose, teaching synthesis, model output, or answer bodies.",
"closed_objects": [
"generated prose payload",
"model output payload",
"teaching synthesis payload",
"answer body payload"
]
},
{
"surface": "public_receipt_export",
"denial_code": "public_receipt_export_blocked_pending_policy",
"current_state": "blocked",
"allowed_response": "Return receipt_pointer with public_receipt_ready false, export_ready false, and blocked export_state.",
"denied_response": "Do not export receipt bodies, claim maps, content-hash bundles, public bundles, or download URLs.",
"closed_objects": [
"receipt body payload",
"claim map payload",
"content hash bundle",
"public bundle",
"download URL"
]
},
{
"surface": "mcp_execution",
"denial_code": "mcp_documentation_only_not_callable",
"current_state": "documentation_only_not_callable",
"allowed_response": "Return /docs/mcp, zero callable tools, zero callable resources, no server URL, and activation gates.",
"denied_response": "Do not announce, call, simulate, or discover MCP tools, resources, transports, auth, or runtime endpoints.",
"closed_objects": [
"server URL",
"tool inventory",
"resource inventory",
"tool-call path",
"resource-read path",
"runtime endpoint"
]
}
]
}
} Readiness Check Skeleton
{
"request": "GET /api/v1/readiness.json",
"contract": "read_only_adapter_readiness",
"expected_header": "X-Robots-Tag: noindex, nofollow",
"read_first": [
"contract",
"status",
"indexability",
"states",
"readiness.adapters",
"data.supported_operations"
],
"receipt_pointer": null,
"allowed_result": "adapter readiness metadata only",
"disabled_operations_remain_disabled": [
"adapter_execution",
"source_acquisition",
"crawl",
"primary_text_export",
"translation",
"morphology",
"etymology",
"lexical_claim",
"frequency_claim",
"receipt_export"
]
} Agent Cookbook
These examples are pointer-only projections generated from the same read-only fixture payload builders used by the public JSON handlers. Current JSON is noindex, fixture-backed, and cannot return source text, translation, morphology claims, etymology claims, lexical claims, model output, tool execution, or public receipt exports.
Term Lookup
Inspect the fixture-backed term envelope for the Greek psyche row without requesting lexical or philological claims.
Boundary: Read-only, noindex, fixture-backed JSON only; no source text, translation, morphology claim, etymology claim, lexical claim, model output, tool execution, or public receipt export is available.
GET /api/public/terms/greek/psyche.json {
"api_version": "v0-fixture-read-only",
"contract": "read_only_fixture_pending_state",
"status": "ok",
"entity_type": "term",
"entity_id": "term:grc:psyche",
"canonical_url": "https://logoi.health/words/greek/psyche",
"source_ids": [
"source:lexicon:greek-fallback-pending",
"source:grc:homer-archive-fixture-pending",
"source:etymology:greek-beekes-2010-pending",
"source:etymology:greek-chantraine-pending",
"source:etymology:greek-frisk-pending",
"source:etymology:greek-lsj-fallback-pending",
"source:lexicon:hebrew-fallback-pending",
"source:lexicon:latin-fallback-pending",
"source:grc:homer-morphology-provider-pending",
"source:etymology:english-oed-pending",
"source:etymology:english-med-pending",
"source:etymology:english-bosworth-toller-pending",
"source:etymology:english-germanic-authority-pending",
"source:etymology:hebrew-halot-pending",
"source:etymology:hebrew-dch-pending",
"source:etymology:hebrew-bdb-fallback-pending",
"source:etymology:latin-de-vaan-pending",
"source:etymology:latin-ernout-meillet-pending",
"source:etymology:latin-walde-hofmann-pending",
"source:etymology:latin-lewis-short-fallback-pending",
"source:receipt:soul-word-journey-v0"
],
"evidence_ids": [
"evidence:term:state-unavailable",
"evidence:occurrence:psychas-source-pending",
"evidence:morphology:psychas-provider-pending",
"evidence:etymology:authorities-unavailable",
"evidence:kwic:fixture-scope",
"evidence:chart:fixture-scope",
"evidence:journey:not-proven"
],
"receipt_pointer": {
"id": "receipt:word:grc-psyche-v0",
"slug": "grc-psyche-v0",
"canonical_path": "/receipts/soul-word-journey-v0",
"canonical_url": "https://logoi.health/receipts/soul-word-journey-v0",
"version": "v0-fixture",
"pointer_only": true,
"public_receipt_ready": false,
"export_ready": false,
"export_state": "blocked_pending_public_receipt_policy",
"public_export_url": null,
"closed_fields": [
"receipt_body",
"evidence_crosswalk",
"public_export_bundle",
"private_data"
],
"indexability": "noindex,follow"
},
"indexability": {
"declared": "noindex,follow",
"effective": "noindex,follow",
"robots": "noindex, nofollow",
"route_path": "/words/greek/psyche",
"source_gate": "source_audit_required",
"blockers": [
"gate:lexical-source-review",
"gate:morphology-provider-review",
"gate:etymology-authority-review"
]
},
"states": {
"pending": [
"evidence:term:state-unavailable",
"evidence:occurrence:psychas-source-pending",
"evidence:morphology:psychas-provider-pending",
"route:word-greek-psyche:source_gate_open"
],
"unavailable": [
"evidence:etymology:authorities-unavailable"
],
"blocked": [
"gate:lexical-source-review",
"gate:morphology-provider-review",
"gate:etymology-authority-review",
"receipt:word:grc-psyche-v0:public_receipt_export_blocked"
],
"fixture_scope": [
"evidence:kwic:fixture-scope",
"evidence:chart:fixture-scope"
]
},
"response_policy": {
"pointer_only": true,
"json_noindex": {
"header": "X-Robots-Tag",
"value": "noindex, nofollow"
},
"source_ids": "metadata_pointers_only",
"evidence_ids": "state_and_scope_pointers_only",
"receipt_pointer": "metadata_pointer_only_no_public_export",
"primary_text_status": "withheld",
"translation_status": "withheld",
"public_receipt_export": "blocked_pending_public_receipt_policy",
"claim_promotion": "blocked_pending_source_receipt_and_review_gates",
"mcp": {
"operational": false,
"server_url": null,
"callable_tools": 0,
"callable_resources": 0,
"runtime_endpoint": null
},
"refused_surfaces": [
"source_text",
"translation_text",
"morphology_claim",
"etymology_claim",
"lexical_range_claim",
"frequency_claim",
"interpretive_synthesis",
"model_output",
"tool_execution",
"public_receipt_export"
],
"closed_surface_denials": [
{
"surface": "source_text",
"denial_code": "source_text_withheld_until_source_gates_close",
"current_state": "withheld",
"allowed_response": "Return source IDs, evidence IDs, route state, source gate, and withheld display status.",
"denied_response": "Do not quote, reconstruct, summarize, or export primary source text.",
"closed_objects": [
"primary content payload",
"line content payload",
"text export payload",
"local snapshot locator"
]
},
{
"surface": "translation_text",
"denial_code": "translation_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return translation status metadata and the relevant source or review gate.",
"denied_response": "Do not translate, gloss, paraphrase, or synthesize translation text.",
"closed_objects": [
"translation content payload",
"gloss content payload",
"semantic rendering payload"
]
},
{
"surface": "morphology_claim",
"denial_code": "morphology_claim_unavailable_pending_provider_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return provider provenance, parser metadata, and asserted_features_public false.",
"denied_response": "Do not assert parsed morphology features or lemma-click morphology facts.",
"closed_objects": [
"feature assertion payload",
"public morphology payload",
"lemma-click fact payload"
]
},
{
"surface": "etymology_claim",
"denial_code": "etymology_claim_unavailable_pending_authority_review",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return authority-source requirements, confidence state, and pending review gate.",
"denied_response": "Do not derive roots, cognates, histories, origins, or etymology statements.",
"closed_objects": [
"origin statement payload",
"root assertion payload",
"cognate assertion payload",
"history narrative payload"
]
},
{
"surface": "lexical_range_claim",
"denial_code": "lexical_range_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return lexical unavailable state and source pointer requirements.",
"denied_response": "Do not generate meanings, semantic ranges, synonyms, or cross-language equivalences.",
"closed_objects": [
"semantic range payload",
"meaning synthesis payload",
"synonym payload",
"cross-language equivalence payload"
]
},
{
"surface": "frequency_claim",
"denial_code": "frequency_fixture_scope_only",
"current_state": "fixture_scope_only",
"allowed_response": "Return count scope warnings and fixture-scope metadata only.",
"denied_response": "Do not claim corpus-wide frequency, KWIC completeness, collocation, or distribution.",
"closed_objects": [
"corpus count payload",
"complete KWIC payload",
"collocation payload",
"distribution payload"
]
},
{
"surface": "generated_answer",
"denial_code": "generated_answer_not_available_in_public_api",
"current_state": "blocked",
"allowed_response": "Return pointer-state metadata and blockers as the answer.",
"denied_response": "Do not return generated research prose, teaching synthesis, model output, or answer bodies.",
"closed_objects": [
"generated prose payload",
"model output payload",
"teaching synthesis payload",
"answer body payload"
]
},
{
"surface": "public_receipt_export",
"denial_code": "public_receipt_export_blocked_pending_policy",
"current_state": "blocked",
"allowed_response": "Return receipt_pointer with public_receipt_ready false, export_ready false, and blocked export_state.",
"denied_response": "Do not export receipt bodies, claim maps, content-hash bundles, public bundles, or download URLs.",
"closed_objects": [
"receipt body payload",
"claim map payload",
"content hash bundle",
"public bundle",
"download URL"
]
},
{
"surface": "mcp_execution",
"denial_code": "mcp_documentation_only_not_callable",
"current_state": "documentation_only_not_callable",
"allowed_response": "Return /docs/mcp, zero callable tools, zero callable resources, no server URL, and activation gates.",
"denied_response": "Do not announce, call, simulate, or discover MCP tools, resources, transports, auth, or runtime endpoints.",
"closed_objects": [
"server URL",
"tool inventory",
"resource inventory",
"tool-call path",
"resource-read path",
"runtime endpoint"
]
}
]
}
} Passage Pointer
Inspect the passage envelope for the P0 Iliad fixture without receiving primary source text or translation text.
Boundary: Read-only, noindex, fixture-backed JSON only; no source text, translation, morphology claim, etymology claim, lexical claim, model output, tool execution, or public receipt export is available.
GET /api/public/passages/iliad-1-1-5.json {
"api_version": "v0-fixture-read-only",
"contract": "read_only_fixture_pending_state",
"status": "ok",
"entity_type": "passage",
"entity_id": "passage:iliad-1-1-5",
"canonical_url": "https://logoi.health/passages/iliad-1-1-5",
"source_ids": [
"source:grc:homer-archive-fixture-pending",
"source:logoi:gloss-draft",
"source:grc:homer-morphology-provider-pending"
],
"evidence_ids": [
"evidence:homer-passage-source-pending",
"evidence:occurrence:psychas-source-pending",
"evidence:gloss:pending",
"evidence:kwic:fixture-scope",
"evidence:morphology:psychas-provider-pending"
],
"receipt_pointer": {
"id": "receipt:passage:iliad-1-1-5-v0",
"slug": "iliad-1-1-5-v0",
"canonical_path": "/receipts/soul-word-journey-v0",
"canonical_url": "https://logoi.health/receipts/soul-word-journey-v0",
"version": "v0-fixture",
"pointer_only": true,
"public_receipt_ready": false,
"export_ready": false,
"export_state": "blocked_pending_public_receipt_policy",
"public_export_url": null,
"closed_fields": [
"receipt_body",
"evidence_crosswalk",
"public_export_bundle",
"private_data"
],
"indexability": "noindex,follow"
},
"indexability": {
"declared": "noindex,follow",
"effective": "noindex,follow",
"robots": "noindex, nofollow",
"route_path": "/passages/iliad-1-1-5",
"source_gate": "source_audit_required",
"blockers": []
},
"states": {
"pending": [
"evidence:homer-passage-source-pending",
"evidence:occurrence:psychas-source-pending",
"evidence:gloss:pending",
"evidence:morphology:psychas-provider-pending"
],
"unavailable": [],
"blocked": [
"receipt:passage:iliad-1-1-5-v0:public_receipt_export_blocked"
],
"fixture_scope": [
"evidence:kwic:fixture-scope"
]
},
"response_policy": {
"pointer_only": true,
"json_noindex": {
"header": "X-Robots-Tag",
"value": "noindex, nofollow"
},
"source_ids": "metadata_pointers_only",
"evidence_ids": "state_and_scope_pointers_only",
"receipt_pointer": "metadata_pointer_only_no_public_export",
"primary_text_status": "withheld",
"translation_status": "withheld",
"public_receipt_export": "blocked_pending_public_receipt_policy",
"claim_promotion": "blocked_pending_source_receipt_and_review_gates",
"mcp": {
"operational": false,
"server_url": null,
"callable_tools": 0,
"callable_resources": 0,
"runtime_endpoint": null
},
"refused_surfaces": [
"source_text",
"translation_text",
"morphology_claim",
"etymology_claim",
"lexical_range_claim",
"frequency_claim",
"interpretive_synthesis",
"model_output",
"tool_execution",
"public_receipt_export"
],
"closed_surface_denials": [
{
"surface": "source_text",
"denial_code": "source_text_withheld_until_source_gates_close",
"current_state": "withheld",
"allowed_response": "Return source IDs, evidence IDs, route state, source gate, and withheld display status.",
"denied_response": "Do not quote, reconstruct, summarize, or export primary source text.",
"closed_objects": [
"primary content payload",
"line content payload",
"text export payload",
"local snapshot locator"
]
},
{
"surface": "translation_text",
"denial_code": "translation_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return translation status metadata and the relevant source or review gate.",
"denied_response": "Do not translate, gloss, paraphrase, or synthesize translation text.",
"closed_objects": [
"translation content payload",
"gloss content payload",
"semantic rendering payload"
]
},
{
"surface": "morphology_claim",
"denial_code": "morphology_claim_unavailable_pending_provider_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return provider provenance, parser metadata, and asserted_features_public false.",
"denied_response": "Do not assert parsed morphology features or lemma-click morphology facts.",
"closed_objects": [
"feature assertion payload",
"public morphology payload",
"lemma-click fact payload"
]
},
{
"surface": "etymology_claim",
"denial_code": "etymology_claim_unavailable_pending_authority_review",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return authority-source requirements, confidence state, and pending review gate.",
"denied_response": "Do not derive roots, cognates, histories, origins, or etymology statements.",
"closed_objects": [
"origin statement payload",
"root assertion payload",
"cognate assertion payload",
"history narrative payload"
]
},
{
"surface": "lexical_range_claim",
"denial_code": "lexical_range_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return lexical unavailable state and source pointer requirements.",
"denied_response": "Do not generate meanings, semantic ranges, synonyms, or cross-language equivalences.",
"closed_objects": [
"semantic range payload",
"meaning synthesis payload",
"synonym payload",
"cross-language equivalence payload"
]
},
{
"surface": "frequency_claim",
"denial_code": "frequency_fixture_scope_only",
"current_state": "fixture_scope_only",
"allowed_response": "Return count scope warnings and fixture-scope metadata only.",
"denied_response": "Do not claim corpus-wide frequency, KWIC completeness, collocation, or distribution.",
"closed_objects": [
"corpus count payload",
"complete KWIC payload",
"collocation payload",
"distribution payload"
]
},
{
"surface": "generated_answer",
"denial_code": "generated_answer_not_available_in_public_api",
"current_state": "blocked",
"allowed_response": "Return pointer-state metadata and blockers as the answer.",
"denied_response": "Do not return generated research prose, teaching synthesis, model output, or answer bodies.",
"closed_objects": [
"generated prose payload",
"model output payload",
"teaching synthesis payload",
"answer body payload"
]
},
{
"surface": "public_receipt_export",
"denial_code": "public_receipt_export_blocked_pending_policy",
"current_state": "blocked",
"allowed_response": "Return receipt_pointer with public_receipt_ready false, export_ready false, and blocked export_state.",
"denied_response": "Do not export receipt bodies, claim maps, content-hash bundles, public bundles, or download URLs.",
"closed_objects": [
"receipt body payload",
"claim map payload",
"content hash bundle",
"public bundle",
"download URL"
]
},
{
"surface": "mcp_execution",
"denial_code": "mcp_documentation_only_not_callable",
"current_state": "documentation_only_not_callable",
"allowed_response": "Return /docs/mcp, zero callable tools, zero callable resources, no server URL, and activation gates.",
"denied_response": "Do not announce, call, simulate, or discover MCP tools, resources, transports, auth, or runtime endpoints.",
"closed_objects": [
"server URL",
"tool inventory",
"resource inventory",
"tool-call path",
"resource-read path",
"runtime endpoint"
]
}
]
},
"data": {
"source_display_state": "withheld_in_public_json",
"translation_display_state": "withheld_pending_translation_review"
}
} Source Pointer Metadata
Inspect source metadata pointers attached to the term envelope without requesting a source text export.
Boundary: Source examples are pointer-only metadata; source text and translation text remain withheld.
GET /api/public/terms/greek/psyche.json then read source_ids {
"source_ids": [
"source:lexicon:greek-fallback-pending",
"source:grc:homer-archive-fixture-pending",
"source:etymology:greek-beekes-2010-pending",
"source:etymology:greek-chantraine-pending",
"source:etymology:greek-frisk-pending",
"source:etymology:greek-lsj-fallback-pending",
"source:lexicon:hebrew-fallback-pending",
"source:lexicon:latin-fallback-pending",
"source:grc:homer-morphology-provider-pending",
"source:etymology:english-oed-pending",
"source:etymology:english-med-pending",
"source:etymology:english-bosworth-toller-pending",
"source:etymology:english-germanic-authority-pending",
"source:etymology:hebrew-halot-pending",
"source:etymology:hebrew-dch-pending",
"source:etymology:hebrew-bdb-fallback-pending",
"source:etymology:latin-de-vaan-pending",
"source:etymology:latin-ernout-meillet-pending",
"source:etymology:latin-walde-hofmann-pending",
"source:etymology:latin-lewis-short-fallback-pending",
"source:receipt:soul-word-journey-v0"
],
"evidence_ids": [
"evidence:term:state-unavailable",
"evidence:occurrence:psychas-source-pending",
"evidence:morphology:psychas-provider-pending",
"evidence:etymology:authorities-unavailable",
"evidence:kwic:fixture-scope",
"evidence:chart:fixture-scope",
"evidence:journey:not-proven"
],
"indexability": {
"declared": "noindex,follow",
"effective": "noindex,follow",
"robots": "noindex, nofollow",
"route_path": "/words/greek/psyche",
"source_gate": "source_audit_required",
"blockers": [
"gate:lexical-source-review",
"gate:morphology-provider-review",
"gate:etymology-authority-review"
]
},
"states": {
"pending": [
"evidence:term:state-unavailable",
"evidence:occurrence:psychas-source-pending",
"evidence:morphology:psychas-provider-pending",
"route:word-greek-psyche:source_gate_open"
],
"unavailable": [
"evidence:etymology:authorities-unavailable"
],
"blocked": [
"gate:lexical-source-review",
"gate:morphology-provider-review",
"gate:etymology-authority-review",
"receipt:word:grc-psyche-v0:public_receipt_export_blocked"
],
"fixture_scope": [
"evidence:kwic:fixture-scope",
"evidence:chart:fixture-scope"
]
},
"response_policy": {
"pointer_only": true,
"json_noindex": {
"header": "X-Robots-Tag",
"value": "noindex, nofollow"
},
"source_ids": "metadata_pointers_only",
"evidence_ids": "state_and_scope_pointers_only",
"receipt_pointer": "metadata_pointer_only_no_public_export",
"primary_text_status": "withheld",
"translation_status": "withheld",
"public_receipt_export": "blocked_pending_public_receipt_policy",
"claim_promotion": "blocked_pending_source_receipt_and_review_gates",
"mcp": {
"operational": false,
"server_url": null,
"callable_tools": 0,
"callable_resources": 0,
"runtime_endpoint": null
},
"refused_surfaces": [
"source_text",
"translation_text",
"morphology_claim",
"etymology_claim",
"lexical_range_claim",
"frequency_claim",
"interpretive_synthesis",
"model_output",
"tool_execution",
"public_receipt_export"
],
"closed_surface_denials": [
{
"surface": "source_text",
"denial_code": "source_text_withheld_until_source_gates_close",
"current_state": "withheld",
"allowed_response": "Return source IDs, evidence IDs, route state, source gate, and withheld display status.",
"denied_response": "Do not quote, reconstruct, summarize, or export primary source text.",
"closed_objects": [
"primary content payload",
"line content payload",
"text export payload",
"local snapshot locator"
]
},
{
"surface": "translation_text",
"denial_code": "translation_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return translation status metadata and the relevant source or review gate.",
"denied_response": "Do not translate, gloss, paraphrase, or synthesize translation text.",
"closed_objects": [
"translation content payload",
"gloss content payload",
"semantic rendering payload"
]
},
{
"surface": "morphology_claim",
"denial_code": "morphology_claim_unavailable_pending_provider_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return provider provenance, parser metadata, and asserted_features_public false.",
"denied_response": "Do not assert parsed morphology features or lemma-click morphology facts.",
"closed_objects": [
"feature assertion payload",
"public morphology payload",
"lemma-click fact payload"
]
},
{
"surface": "etymology_claim",
"denial_code": "etymology_claim_unavailable_pending_authority_review",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return authority-source requirements, confidence state, and pending review gate.",
"denied_response": "Do not derive roots, cognates, histories, origins, or etymology statements.",
"closed_objects": [
"origin statement payload",
"root assertion payload",
"cognate assertion payload",
"history narrative payload"
]
},
{
"surface": "lexical_range_claim",
"denial_code": "lexical_range_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return lexical unavailable state and source pointer requirements.",
"denied_response": "Do not generate meanings, semantic ranges, synonyms, or cross-language equivalences.",
"closed_objects": [
"semantic range payload",
"meaning synthesis payload",
"synonym payload",
"cross-language equivalence payload"
]
},
{
"surface": "frequency_claim",
"denial_code": "frequency_fixture_scope_only",
"current_state": "fixture_scope_only",
"allowed_response": "Return count scope warnings and fixture-scope metadata only.",
"denied_response": "Do not claim corpus-wide frequency, KWIC completeness, collocation, or distribution.",
"closed_objects": [
"corpus count payload",
"complete KWIC payload",
"collocation payload",
"distribution payload"
]
},
{
"surface": "generated_answer",
"denial_code": "generated_answer_not_available_in_public_api",
"current_state": "blocked",
"allowed_response": "Return pointer-state metadata and blockers as the answer.",
"denied_response": "Do not return generated research prose, teaching synthesis, model output, or answer bodies.",
"closed_objects": [
"generated prose payload",
"model output payload",
"teaching synthesis payload",
"answer body payload"
]
},
{
"surface": "public_receipt_export",
"denial_code": "public_receipt_export_blocked_pending_policy",
"current_state": "blocked",
"allowed_response": "Return receipt_pointer with public_receipt_ready false, export_ready false, and blocked export_state.",
"denied_response": "Do not export receipt bodies, claim maps, content-hash bundles, public bundles, or download URLs.",
"closed_objects": [
"receipt body payload",
"claim map payload",
"content hash bundle",
"public bundle",
"download URL"
]
},
{
"surface": "mcp_execution",
"denial_code": "mcp_documentation_only_not_callable",
"current_state": "documentation_only_not_callable",
"allowed_response": "Return /docs/mcp, zero callable tools, zero callable resources, no server URL, and activation gates.",
"denied_response": "Do not announce, call, simulate, or discover MCP tools, resources, transports, auth, or runtime endpoints.",
"closed_objects": [
"server URL",
"tool inventory",
"resource inventory",
"tool-call path",
"resource-read path",
"runtime endpoint"
]
}
]
},
"boundary": "Source and evidence IDs expose metadata only as pointers; they do not expose source text, translation text, or proof-ready claims."
} Reference Parse Unavailable State
Parse a recognized Iliad reference outside the first-slice passage fixture and preserve the unavailable evidence state.
Boundary: Read-only, noindex, fixture-backed JSON only; no source text, translation, morphology claim, etymology claim, lexical claim, model output, tool execution, or public receipt export is available.
GET /api/public/references/parse.json?ref=Iliad%201.6-10 {
"api_version": "v0-fixture-read-only",
"contract": "read_only_fixture_pending_state",
"status": "ok",
"entity_type": "reference",
"entity_id": null,
"canonical_url": "https://logoi.health/texts/greek/homer/iliad",
"source_ids": [
"source:grc:homer-archive-fixture-pending"
],
"evidence_ids": [
"evidence:blocker:source-review"
],
"receipt_pointer": null,
"indexability": {
"declared": "noindex,follow",
"effective": "noindex,follow",
"robots": "noindex, nofollow",
"route_path": "/texts/greek/homer/iliad",
"source_gate": "source_audit_required",
"blockers": [
"gate:homer-source-review",
"gate:homer-license-review",
"gate:homer-checksum"
]
},
"states": {
"pending": [
"route:text-greek-homer-iliad:source_gate_open"
],
"unavailable": [
"reference_parser:fixture_passage_unavailable"
],
"blocked": [
"evidence:blocker:source-review",
"gate:homer-source-review",
"gate:homer-license-review",
"gate:homer-checksum"
],
"fixture_scope": []
},
"response_policy": {
"pointer_only": true,
"json_noindex": {
"header": "X-Robots-Tag",
"value": "noindex, nofollow"
},
"source_ids": "metadata_pointers_only",
"evidence_ids": "state_and_scope_pointers_only",
"receipt_pointer": "metadata_pointer_only_no_public_export",
"primary_text_status": "withheld",
"translation_status": "withheld",
"public_receipt_export": "blocked_pending_public_receipt_policy",
"claim_promotion": "blocked_pending_source_receipt_and_review_gates",
"mcp": {
"operational": false,
"server_url": null,
"callable_tools": 0,
"callable_resources": 0,
"runtime_endpoint": null
},
"refused_surfaces": [
"source_text",
"translation_text",
"morphology_claim",
"etymology_claim",
"lexical_range_claim",
"frequency_claim",
"interpretive_synthesis",
"model_output",
"tool_execution",
"public_receipt_export"
],
"closed_surface_denials": [
{
"surface": "source_text",
"denial_code": "source_text_withheld_until_source_gates_close",
"current_state": "withheld",
"allowed_response": "Return source IDs, evidence IDs, route state, source gate, and withheld display status.",
"denied_response": "Do not quote, reconstruct, summarize, or export primary source text.",
"closed_objects": [
"primary content payload",
"line content payload",
"text export payload",
"local snapshot locator"
]
},
{
"surface": "translation_text",
"denial_code": "translation_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return translation status metadata and the relevant source or review gate.",
"denied_response": "Do not translate, gloss, paraphrase, or synthesize translation text.",
"closed_objects": [
"translation content payload",
"gloss content payload",
"semantic rendering payload"
]
},
{
"surface": "morphology_claim",
"denial_code": "morphology_claim_unavailable_pending_provider_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return provider provenance, parser metadata, and asserted_features_public false.",
"denied_response": "Do not assert parsed morphology features or lemma-click morphology facts.",
"closed_objects": [
"feature assertion payload",
"public morphology payload",
"lemma-click fact payload"
]
},
{
"surface": "etymology_claim",
"denial_code": "etymology_claim_unavailable_pending_authority_review",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return authority-source requirements, confidence state, and pending review gate.",
"denied_response": "Do not derive roots, cognates, histories, origins, or etymology statements.",
"closed_objects": [
"origin statement payload",
"root assertion payload",
"cognate assertion payload",
"history narrative payload"
]
},
{
"surface": "lexical_range_claim",
"denial_code": "lexical_range_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return lexical unavailable state and source pointer requirements.",
"denied_response": "Do not generate meanings, semantic ranges, synonyms, or cross-language equivalences.",
"closed_objects": [
"semantic range payload",
"meaning synthesis payload",
"synonym payload",
"cross-language equivalence payload"
]
},
{
"surface": "frequency_claim",
"denial_code": "frequency_fixture_scope_only",
"current_state": "fixture_scope_only",
"allowed_response": "Return count scope warnings and fixture-scope metadata only.",
"denied_response": "Do not claim corpus-wide frequency, KWIC completeness, collocation, or distribution.",
"closed_objects": [
"corpus count payload",
"complete KWIC payload",
"collocation payload",
"distribution payload"
]
},
{
"surface": "generated_answer",
"denial_code": "generated_answer_not_available_in_public_api",
"current_state": "blocked",
"allowed_response": "Return pointer-state metadata and blockers as the answer.",
"denied_response": "Do not return generated research prose, teaching synthesis, model output, or answer bodies.",
"closed_objects": [
"generated prose payload",
"model output payload",
"teaching synthesis payload",
"answer body payload"
]
},
{
"surface": "public_receipt_export",
"denial_code": "public_receipt_export_blocked_pending_policy",
"current_state": "blocked",
"allowed_response": "Return receipt_pointer with public_receipt_ready false, export_ready false, and blocked export_state.",
"denied_response": "Do not export receipt bodies, claim maps, content-hash bundles, public bundles, or download URLs.",
"closed_objects": [
"receipt body payload",
"claim map payload",
"content hash bundle",
"public bundle",
"download URL"
]
},
{
"surface": "mcp_execution",
"denial_code": "mcp_documentation_only_not_callable",
"current_state": "documentation_only_not_callable",
"allowed_response": "Return /docs/mcp, zero callable tools, zero callable resources, no server URL, and activation gates.",
"denied_response": "Do not announce, call, simulate, or discover MCP tools, resources, transports, auth, or runtime endpoints.",
"closed_objects": [
"server URL",
"tool inventory",
"resource inventory",
"tool-call path",
"resource-read path",
"runtime endpoint"
]
}
]
},
"data": {
"input": "Iliad 1.6-10",
"normalized_reference": "Iliad 1.6-10",
"parse_status": "recognized_evidence_unavailable",
"recognized_work_id": "work:grc:homer:iliad",
"matched_passage_id": null
}
} Receipt Pointer Inspection
Inspect the receipt pointer and blocked export state without exporting a public receipt.
Boundary: Read-only, noindex, fixture-backed JSON only; no source text, translation, morphology claim, etymology claim, lexical claim, model output, tool execution, or public receipt export is available.
GET /api/public/receipts/soul-word-journey-v0.json {
"receipt_pointer": {
"id": "receipt:soul-word-journey-v0",
"slug": "soul-word-journey-v0",
"canonical_path": "/receipts/soul-word-journey-v0",
"canonical_url": "https://logoi.health/receipts/soul-word-journey-v0",
"version": "v0-fixture",
"pointer_only": true,
"public_receipt_ready": false,
"export_ready": false,
"export_state": "blocked_pending_public_receipt_policy",
"public_export_url": null,
"closed_fields": [
"receipt_body",
"evidence_crosswalk",
"public_export_bundle",
"private_data"
],
"indexability": "noindex,follow"
},
"source_ids": [
"source:grc:homer-archive-fixture-pending",
"source:receipt:soul-word-journey-v0",
"source:etymology:english-oed-pending",
"source:etymology:english-med-pending",
"source:etymology:english-bosworth-toller-pending",
"source:etymology:english-germanic-authority-pending",
"source:etymology:hebrew-halot-pending",
"source:etymology:hebrew-dch-pending",
"source:etymology:hebrew-bdb-fallback-pending",
"source:etymology:greek-beekes-2010-pending",
"source:etymology:greek-chantraine-pending",
"source:etymology:greek-frisk-pending",
"source:etymology:greek-lsj-fallback-pending",
"source:etymology:latin-de-vaan-pending",
"source:etymology:latin-ernout-meillet-pending",
"source:etymology:latin-walde-hofmann-pending",
"source:etymology:latin-lewis-short-fallback-pending"
],
"evidence_ids": [
"evidence:journey:not-proven",
"evidence:homer-passage-source-pending",
"evidence:occurrence:psychas-source-pending",
"evidence:etymology:authorities-unavailable",
"evidence:blocker:source-review"
],
"indexability": {
"declared": "noindex,follow",
"effective": "noindex,follow",
"robots": "noindex, nofollow",
"route_path": "/journeys/soul-word",
"source_gate": "source_audit_required",
"blockers": [
"gate:receipt-policy",
"gate:hebrew-source-review",
"gate:greek-nt-source-review",
"gate:latin-source-review",
"gate:english-source-review"
]
},
"states": {
"pending": [
"evidence:homer-passage-source-pending",
"evidence:occurrence:psychas-source-pending",
"route:journey-soul-word:source_gate_open"
],
"unavailable": [
"evidence:etymology:authorities-unavailable"
],
"blocked": [
"evidence:blocker:source-review",
"gate:receipt-policy",
"gate:hebrew-source-review",
"gate:greek-nt-source-review",
"gate:latin-source-review",
"gate:english-source-review",
"receipt:soul-word-journey-v0:public_receipt_export_blocked"
],
"fixture_scope": []
}
} Closed Claim Surface Refusal
Show how an agent should refuse source text, translation, morphology, etymology, lexical, or receipt-export requests.
Boundary: Closed claim surfaces remain refusals even when a fixture row contains metadata about the pending object class.
NO RUNTIME ROUTE. Agent-side refusal contract for closed claim surfaces. [
{
"id": "source_text_refusal",
"claimFamily": "source_text",
"requestedSurface": "Source Text",
"attemptedRequest": "Agent asks for the Greek text behind /api/public/passages/iliad-1-1-5.json.",
"response": "{\n \"contract\": \"closed_claim_surface_refusal\",\n \"status\": \"refused\",\n \"claim_family\": \"source_text\",\n \"requested_surface\": \"source_text\",\n \"reason\": \"Primary text is withheld until the source, license, checksum, and passage gates close.\",\n \"api_response_status\": \"documentation_only_refusal_not_runtime_route\",\n \"endpoint_policy\": \"No public JSON endpoint may add source text fields or source text exports in this contract.\",\n \"mcp_policy\": \"No future MCP resource may expose source text until the source-text display gate is explicitly closed.\",\n \"allowed_response\": \"Return the fixture envelope, source IDs, evidence IDs, receipt pointer, indexability, states, and blockers.\",\n \"closed_fields_remain_absent\": [\n \"source_text\",\n \"translation_text\",\n \"parsed_features\",\n \"etymology_statement\",\n \"lexical_range_claim\",\n \"frequency_claim\",\n \"public_receipt_export\"\n ]\n}"
},
{
"id": "translation_refusal",
"claimFamily": "translation_text",
"requestedSurface": "Translation Text",
"attemptedRequest": "Agent asks for a translation of Iliad 1.1-5 from the public API.",
"response": "{\n \"contract\": \"closed_claim_surface_refusal\",\n \"status\": \"refused\",\n \"claim_family\": \"translation_text\",\n \"requested_surface\": \"translation_text\",\n \"reason\": \"Translation text is unavailable_pending_audit and must not be generated from memory.\",\n \"api_response_status\": \"documentation_only_refusal_not_runtime_route\",\n \"endpoint_policy\": \"Translation payloads remain status/null metadata until a reviewed translation policy exists.\",\n \"mcp_policy\": \"Future MCP must mirror the unavailable translation state and must not synthesize a translation.\",\n \"allowed_response\": \"Return the fixture envelope and the translation unavailable state without producing a translation.\",\n \"closed_fields_remain_absent\": [\n \"source_text\",\n \"translation_text\",\n \"parsed_features\",\n \"etymology_statement\",\n \"lexical_range_claim\",\n \"frequency_claim\",\n \"public_receipt_export\"\n ]\n}"
},
{
"id": "morphology_refusal",
"claimFamily": "morphology",
"requestedSurface": "Morphology",
"attemptedRequest": "Agent asks for parsed morphology features for psyche.",
"response": "{\n \"contract\": \"closed_claim_surface_refusal\",\n \"status\": \"refused\",\n \"claim_family\": \"morphology\",\n \"requested_surface\": \"morphology_claim\",\n \"reason\": \"Morphology providers are metadata-only here; asserted_features_public remains false.\",\n \"api_response_status\": \"documentation_only_refusal_not_runtime_route\",\n \"endpoint_policy\": \"Public JSON may name provider metadata but not expose asserted morphology features.\",\n \"mcp_policy\": \"Future MCP resources must not promote provider metadata into parsed morphology facts.\",\n \"allowed_response\": \"Return provider provenance metadata and the pending audit state without parsed feature assertions.\",\n \"closed_fields_remain_absent\": [\n \"source_text\",\n \"translation_text\",\n \"parsed_features\",\n \"etymology_statement\",\n \"lexical_range_claim\",\n \"frequency_claim\",\n \"public_receipt_export\"\n ]\n}"
},
{
"id": "etymology_refusal",
"claimFamily": "etymology",
"requestedSurface": "Etymology",
"attemptedRequest": "Agent asks for an etymology statement for psyche.",
"response": "{\n \"contract\": \"closed_claim_surface_refusal\",\n \"status\": \"refused\",\n \"claim_family\": \"etymology\",\n \"requested_surface\": \"etymology_claim\",\n \"reason\": \"Etymology statements stay unavailable until authority sources and review gates close.\",\n \"api_response_status\": \"documentation_only_refusal_not_runtime_route\",\n \"endpoint_policy\": \"Public JSON may expose etymology gate metadata but no etymology claim text.\",\n \"mcp_policy\": \"Future MCP resources must keep etymology as pending metadata until a reviewed claim family exists.\",\n \"allowed_response\": \"Return authority-source requirements and pending status without an etymology statement.\",\n \"closed_fields_remain_absent\": [\n \"source_text\",\n \"translation_text\",\n \"parsed_features\",\n \"etymology_statement\",\n \"lexical_range_claim\",\n \"frequency_claim\",\n \"public_receipt_export\"\n ]\n}"
},
{
"id": "lexical_refusal",
"claimFamily": "lexical_range",
"requestedSurface": "Lexical Range",
"attemptedRequest": "Agent asks for a public lexical range claim for psyche.",
"response": "{\n \"contract\": \"closed_claim_surface_refusal\",\n \"status\": \"refused\",\n \"claim_family\": \"lexical_range\",\n \"requested_surface\": \"lexical_range_claim\",\n \"reason\": \"Lexical range is unavailable_pending_audit and public_claims remains false.\",\n \"api_response_status\": \"documentation_only_refusal_not_runtime_route\",\n \"endpoint_policy\": \"Public JSON may expose lexical range unavailable state only.\",\n \"mcp_policy\": \"Future MCP resources must not turn unavailable lexical metadata into a lexical range claim.\",\n \"allowed_response\": \"Return the unavailable lexical range state and source pointers without lexical synthesis.\",\n \"closed_fields_remain_absent\": [\n \"source_text\",\n \"translation_text\",\n \"parsed_features\",\n \"etymology_statement\",\n \"lexical_range_claim\",\n \"frequency_claim\",\n \"public_receipt_export\"\n ]\n}"
},
{
"id": "frequency_refusal",
"claimFamily": "frequency",
"requestedSurface": "Frequency",
"attemptedRequest": "Agent asks how often psyche occurs across the corpus.",
"response": "{\n \"contract\": \"closed_claim_surface_refusal\",\n \"status\": \"refused\",\n \"claim_family\": \"frequency\",\n \"requested_surface\": \"frequency_claim\",\n \"reason\": \"Corpus frequency is fixture-scope only; full-corpus counts are not available in this branch.\",\n \"api_response_status\": \"documentation_only_refusal_not_runtime_route\",\n \"endpoint_policy\": \"Public JSON may expose count_scope metadata but not corpus-wide frequency claims.\",\n \"mcp_policy\": \"Future MCP resources must preserve fixture-scope count warnings and must not infer corpus frequency.\",\n \"allowed_response\": \"Return count scope and fixture warning metadata without claiming a corpus frequency.\",\n \"closed_fields_remain_absent\": [\n \"source_text\",\n \"translation_text\",\n \"parsed_features\",\n \"etymology_statement\",\n \"lexical_range_claim\",\n \"frequency_claim\",\n \"public_receipt_export\"\n ]\n}"
},
{
"id": "receipt_export_refusal",
"claimFamily": "receipt_export",
"requestedSurface": "Receipt Export",
"attemptedRequest": "Agent asks to export the soul-word journey receipt.",
"response": "{\n \"contract\": \"closed_claim_surface_refusal\",\n \"status\": \"refused\",\n \"claim_family\": \"receipt_export\",\n \"requested_surface\": \"public_receipt_export\",\n \"reason\": \"Receipts are pointer-only; public_receipt_ready is false and export_state is blocked_pending_public_receipt_policy.\",\n \"api_response_status\": \"documentation_only_refusal_not_runtime_route\",\n \"endpoint_policy\": \"Public JSON may expose receipt pointers but no export-ready receipt body, content hash, or claim map.\",\n \"mcp_policy\": \"Future MCP receipt resources must remain pointer-only until the public receipt export policy passes.\",\n \"allowed_response\": \"Return receipt pointer, scope, source IDs, evidence IDs, and blocked export state.\",\n \"closed_fields_remain_absent\": [\n \"source_text\",\n \"translation_text\",\n \"parsed_features\",\n \"etymology_statement\",\n \"lexical_range_claim\",\n \"frequency_claim\",\n \"public_receipt_export\"\n ]\n}"
}
] Future MCP Resource Envelope
Show the envelope a future MCP resource would need to mirror after a server and manifest are explicitly authorized.
Boundary: MCP is non-operational in this branch: zero tools, zero callable resources, no server URL, no discovery manifest, and no runtime endpoint.
NO CALLABLE MCP REQUEST EXISTS. Reserved design target only: logoi://term/greek/psyche {
"mcp_status": "documentation_only",
"operational": false,
"server_url": null,
"tools": [],
"resources": [],
"callable_tools": 0,
"callable_resources": 0,
"contract_hard_stops": [
{
"id": "no_model_calls",
"label": "No model calls",
"enforced": true,
"rule": "Future MCP resources must mirror fixture payloads only; no MCP tool may call an LLM, embedding model, reranker, retrieval service, or remote generation service."
},
{
"id": "no_mcp_runtime",
"label": "No MCP runtime",
"enforced": true,
"rule": "MCP is documentation-only in this branch: no server URL, discovery manifest, tool registry, resource registry, or runtime endpoint exists."
},
{
"id": "no_source_text",
"label": "No source text",
"enforced": true,
"rule": "Future MCP resources must expose source and evidence pointers only until source-text and translation-text display gates are explicitly closed."
},
{
"id": "no_export_ready_receipts",
"label": "No export-ready receipts",
"enforced": true,
"rule": "Future MCP receipt resources may reference receipt pointers only until the public receipt export policy passes."
},
{
"id": "no_public_ready_claims",
"label": "No public-ready claims",
"enforced": true,
"rule": "Future MCP resources must carry the same pending-state envelope and must not upgrade fixture rows into public-ready claims."
}
],
"candidate_resource_uri": "logoi://term/greek/psyche",
"mirrors_public_api": "/api/public/terms/greek/psyche.json",
"required_envelope": {
"source_ids": [
"source:lexicon:greek-fallback-pending",
"source:grc:homer-archive-fixture-pending",
"source:etymology:greek-beekes-2010-pending",
"source:etymology:greek-chantraine-pending",
"source:etymology:greek-frisk-pending",
"source:etymology:greek-lsj-fallback-pending",
"source:lexicon:hebrew-fallback-pending",
"source:lexicon:latin-fallback-pending",
"source:grc:homer-morphology-provider-pending",
"source:etymology:english-oed-pending",
"source:etymology:english-med-pending",
"source:etymology:english-bosworth-toller-pending",
"source:etymology:english-germanic-authority-pending",
"source:etymology:hebrew-halot-pending",
"source:etymology:hebrew-dch-pending",
"source:etymology:hebrew-bdb-fallback-pending",
"source:etymology:latin-de-vaan-pending",
"source:etymology:latin-ernout-meillet-pending",
"source:etymology:latin-walde-hofmann-pending",
"source:etymology:latin-lewis-short-fallback-pending",
"source:receipt:soul-word-journey-v0"
],
"evidence_ids": [
"evidence:term:state-unavailable",
"evidence:occurrence:psychas-source-pending",
"evidence:morphology:psychas-provider-pending",
"evidence:etymology:authorities-unavailable",
"evidence:kwic:fixture-scope",
"evidence:chart:fixture-scope",
"evidence:journey:not-proven"
],
"receipt_pointer": {
"id": "receipt:word:grc-psyche-v0",
"slug": "grc-psyche-v0",
"canonical_path": "/receipts/soul-word-journey-v0",
"canonical_url": "https://logoi.health/receipts/soul-word-journey-v0",
"version": "v0-fixture",
"pointer_only": true,
"public_receipt_ready": false,
"export_ready": false,
"export_state": "blocked_pending_public_receipt_policy",
"public_export_url": null,
"closed_fields": [
"receipt_body",
"evidence_crosswalk",
"public_export_bundle",
"private_data"
],
"indexability": "noindex,follow"
},
"indexability": {
"declared": "noindex,follow",
"effective": "noindex,follow",
"robots": "noindex, nofollow",
"route_path": "/words/greek/psyche",
"source_gate": "source_audit_required",
"blockers": [
"gate:lexical-source-review",
"gate:morphology-provider-review",
"gate:etymology-authority-review"
]
},
"states": {
"pending": [
"evidence:term:state-unavailable",
"evidence:occurrence:psychas-source-pending",
"evidence:morphology:psychas-provider-pending",
"route:word-greek-psyche:source_gate_open"
],
"unavailable": [
"evidence:etymology:authorities-unavailable"
],
"blocked": [
"gate:lexical-source-review",
"gate:morphology-provider-review",
"gate:etymology-authority-review",
"receipt:word:grc-psyche-v0:public_receipt_export_blocked"
],
"fixture_scope": [
"evidence:kwic:fixture-scope",
"evidence:chart:fixture-scope"
]
},
"response_policy": {
"pointer_only": true,
"json_noindex": {
"header": "X-Robots-Tag",
"value": "noindex, nofollow"
},
"source_ids": "metadata_pointers_only",
"evidence_ids": "state_and_scope_pointers_only",
"receipt_pointer": "metadata_pointer_only_no_public_export",
"primary_text_status": "withheld",
"translation_status": "withheld",
"public_receipt_export": "blocked_pending_public_receipt_policy",
"claim_promotion": "blocked_pending_source_receipt_and_review_gates",
"mcp": {
"operational": false,
"server_url": null,
"callable_tools": 0,
"callable_resources": 0,
"runtime_endpoint": null
},
"refused_surfaces": [
"source_text",
"translation_text",
"morphology_claim",
"etymology_claim",
"lexical_range_claim",
"frequency_claim",
"interpretive_synthesis",
"model_output",
"tool_execution",
"public_receipt_export"
],
"closed_surface_denials": [
{
"surface": "source_text",
"denial_code": "source_text_withheld_until_source_gates_close",
"current_state": "withheld",
"allowed_response": "Return source IDs, evidence IDs, route state, source gate, and withheld display status.",
"denied_response": "Do not quote, reconstruct, summarize, or export primary source text.",
"closed_objects": [
"primary content payload",
"line content payload",
"text export payload",
"local snapshot locator"
]
},
{
"surface": "translation_text",
"denial_code": "translation_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return translation status metadata and the relevant source or review gate.",
"denied_response": "Do not translate, gloss, paraphrase, or synthesize translation text.",
"closed_objects": [
"translation content payload",
"gloss content payload",
"semantic rendering payload"
]
},
{
"surface": "morphology_claim",
"denial_code": "morphology_claim_unavailable_pending_provider_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return provider provenance, parser metadata, and asserted_features_public false.",
"denied_response": "Do not assert parsed morphology features or lemma-click morphology facts.",
"closed_objects": [
"feature assertion payload",
"public morphology payload",
"lemma-click fact payload"
]
},
{
"surface": "etymology_claim",
"denial_code": "etymology_claim_unavailable_pending_authority_review",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return authority-source requirements, confidence state, and pending review gate.",
"denied_response": "Do not derive roots, cognates, histories, origins, or etymology statements.",
"closed_objects": [
"origin statement payload",
"root assertion payload",
"cognate assertion payload",
"history narrative payload"
]
},
{
"surface": "lexical_range_claim",
"denial_code": "lexical_range_unavailable_pending_audit",
"current_state": "unavailable_pending_audit",
"allowed_response": "Return lexical unavailable state and source pointer requirements.",
"denied_response": "Do not generate meanings, semantic ranges, synonyms, or cross-language equivalences.",
"closed_objects": [
"semantic range payload",
"meaning synthesis payload",
"synonym payload",
"cross-language equivalence payload"
]
},
{
"surface": "frequency_claim",
"denial_code": "frequency_fixture_scope_only",
"current_state": "fixture_scope_only",
"allowed_response": "Return count scope warnings and fixture-scope metadata only.",
"denied_response": "Do not claim corpus-wide frequency, KWIC completeness, collocation, or distribution.",
"closed_objects": [
"corpus count payload",
"complete KWIC payload",
"collocation payload",
"distribution payload"
]
},
{
"surface": "generated_answer",
"denial_code": "generated_answer_not_available_in_public_api",
"current_state": "blocked",
"allowed_response": "Return pointer-state metadata and blockers as the answer.",
"denied_response": "Do not return generated research prose, teaching synthesis, model output, or answer bodies.",
"closed_objects": [
"generated prose payload",
"model output payload",
"teaching synthesis payload",
"answer body payload"
]
},
{
"surface": "public_receipt_export",
"denial_code": "public_receipt_export_blocked_pending_policy",
"current_state": "blocked",
"allowed_response": "Return receipt_pointer with public_receipt_ready false, export_ready false, and blocked export_state.",
"denied_response": "Do not export receipt bodies, claim maps, content-hash bundles, public bundles, or download URLs.",
"closed_objects": [
"receipt body payload",
"claim map payload",
"content hash bundle",
"public bundle",
"download URL"
]
},
{
"surface": "mcp_execution",
"denial_code": "mcp_documentation_only_not_callable",
"current_state": "documentation_only_not_callable",
"allowed_response": "Return /docs/mcp, zero callable tools, zero callable resources, no server URL, and activation gates.",
"denied_response": "Do not announce, call, simulate, or discover MCP tools, resources, transports, auth, or runtime endpoints.",
"closed_objects": [
"server URL",
"tool inventory",
"resource inventory",
"tool-call path",
"resource-read path",
"runtime endpoint"
]
}
]
}
}
} Receipt Pointer Contract
Receipt pointers are navigation and state metadata. They do not authorize a public receipt export, claim map reconstruction, or private data bundle.
{
"request": "GET /api/public/receipts/soul-word-journey-v0.json",
"receipt_pointer": {
"pointer_only": true,
"public_receipt_ready": false,
"export_ready": false,
"export_state": "blocked_pending_public_receipt_policy",
"public_export_url": null,
"closed_fields": [
"receipt_body",
"evidence_crosswalk",
"public_export_bundle",
"private_data"
]
},
"agent_action": "Link to the canonical receipt route as a state pointer only. Do not export, reconstruct, or summarize a public receipt body."
} Closed Claim Refusals
A request for a closed claim surface should resolve to a refusal state, not a guessed answer. These refusal examples are documentation artifacts, not runtime routes.
| Family | API Expectation | MCP Expectation |
|---|---|---|
Source Textsource_text | No public JSON endpoint may add source text fields or source text exports in this contract. | No future MCP resource may expose source text until the source-text display gate is explicitly closed. |
Translation Texttranslation_text | Translation payloads remain status/null metadata until a reviewed translation policy exists. | Future MCP must mirror the unavailable translation state and must not synthesize a translation. |
Morphologymorphology_claim | Public JSON may name provider metadata but not expose asserted morphology features. | Future MCP resources must not promote provider metadata into parsed morphology facts. |
Etymologyetymology_claim | Public JSON may expose etymology gate metadata but no etymology claim text. | Future MCP resources must keep etymology as pending metadata until a reviewed claim family exists. |
Lexical Rangelexical_range_claim | Public JSON may expose lexical range unavailable state only. | Future MCP resources must not turn unavailable lexical metadata into a lexical range claim. |
Frequencyfrequency_claim | Public JSON may expose count_scope metadata but not corpus-wide frequency claims. | Future MCP resources must preserve fixture-scope count warnings and must not infer corpus frequency. |
Receipt Exportpublic_receipt_export | Public JSON may expose receipt pointers but no export-ready receipt body, content hash, or claim map. | Future MCP receipt resources must remain pointer-only until the public receipt export policy passes. |
| Surface | Attempt | Refusal |
|---|---|---|
Source Text | Agent asks for the Greek text behind /api/public/passages/iliad-1-1-5.json. | |
Translation Text | Agent asks for a translation of Iliad 1.1-5 from the public API. | |
Morphology | Agent asks for parsed morphology features for psyche. | |
Etymology | Agent asks for an etymology statement for psyche. | |
Lexical Range | Agent asks for a public lexical range claim for psyche. | |
Frequency | Agent asks how often psyche occurs across the corpus. | |
Receipt Export | Agent asks to export the soul-word journey receipt. | |
Documented JSON Families
Every row below is read-only, fixture-backed, kept out of public indexing, and required to expose source IDs, evidence IDs, receipt pointer, indexability, and pending/unavailable states.
| Method | Path Template | Entity | Status | Required Fields |
|---|---|---|---|---|
| GET | /api/public/terms/{language}/{lemma}.json | term | Read-only fixture | canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states |
| GET | /api/public/passages/{id}.json | passage | Read-only fixture | canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states |
| GET | /api/public/sources/{id}.json | source | Read-only fixture | canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states |
| GET | /api/public/editions/{id}.json | edition | Read-only fixture | canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states |
| GET | /api/public/receipts/{id}.json | receipt | Read-only fixture | canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states |
| GET | /api/public/journeys/{slug}.json | journey | Read-only fixture | canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states |
| GET | /api/public/references/parse.json?ref={reference} | reference | Read-only fixture | canonical_url, entity_id, source_ids, evidence_ids, receipt_pointer, indexability, states |
| GET | /api/v1/readiness.json | adapter_readiness | Adapter readiness only | adapter_id, adapter_version, source_ids, manifest_ids, snapshot_ids, passage_ids, checksum_state, blocker_ids, supported_operations, display_state |
Payload Rules
- Every response must expose a canonical URL and stable entity identifier.
- Source IDs, evidence IDs, receipt pointer, audit state, review state, and indexability state must travel with the payload.
- Response policy must mark source IDs and evidence IDs as pointers, receipt export as blocked, JSON as noindex, and MCP as non-operational.
- External AI may treat Logoi as pointer-safe and docs-only today: route, endpoint, source, evidence, receipt, robots, review, audit, and blocker state can be repeated; closed claim surfaces cannot be completed.
- Primary text, translation, lexical data, etymology, usage evidence, and generated synthesis remain separate fields.
- Read-only fixture responses must expose pending/unavailable states instead of unaudited morphology, etymology, translation, lexical range, or receipt exports.
- Missing evidence is returned as a blocker or unavailable state, never filled from model memory.
Future Public Boundaries
These boundaries define what a later public API packet must satisfy before adding a family or promoting a claim surface.
| Boundary | Current Rule | Future Rule |
|---|---|---|
| Current callable surface | Only the GET JSON handlers listed in OpenAPI are callable, and every handler is read-only, fixture-backed, and noindex/nofollow. | Any new public family must be added to the docs contract, OpenAPI artifact, tests, and noindex helper before it is callable. |
| Evidence promotion | Pending, unavailable, blocker, and fixture_scope states are authoritative; agents must refuse closed claim surfaces. | A future promotion must close source, license, checksum, passage, receipt, and review gates before a public-ready claim can appear. |
| Receipts | Receipts are pointer-only; public_receipt_ready remains false and export_state remains blocked_pending_public_receipt_policy. | Receipt export requires a separate public receipt policy, leak guard, and validation gate. |
| MCP | MCP is non-operational: no server URL, discovery manifest, tool registry, resource registry, or runtime endpoint exists. | A future MCP server must mirror the public API envelope first and cannot introduce write, generation, private memory, or source-text capabilities. |
Closed Surfaces
- Expensive research endpoints
- Generated teaching endpoints
- Private memory or saved-thread endpoints
- Authenticated account endpoints
- Any route that would expose unaudited source text, translation text, morphology, lexical range, etymology, or corpus-frequency claims
- Any route that would execute MCP tools/resources, export receipts, acquire sources, crawl, translate, parse morphology, produce etymology, or make lexical claims