{"openapi":"3.1.0","info":{"title":"Concordance","description":"\nA deterministic verification and decision-recording engine for AI agents.\n\n## When to use this API\n\nCall before:\n- Stating a chemical equation, physics relationship, or mathematical result as verified fact\n- Committing funds, resources, or authority on behalf of an organization\n- Recording any decision that cannot be reversed without significant cost\n\nDo NOT call for conversation, analysis, or any reversible action.\n\n## Four Gates\n\nEvery packet passes through these gates in order. First failure stops the chain:\n\n- **RED** — Rejects coercion, unilateral authority, rights violations\n- **FLOOR** — Rejects structurally incomplete or internally inconsistent packets\n- **BROTHERS** — Quarantines if fewer than 2 witnesses or review window not elapsed\n- **GOD** — Records permanently if all prior gates pass\n\n## Agent entry points\n\n- `POST /submit` — unauthenticated submission (use this for agents)\n- `POST /validate` — authenticated submission (requires X-Api-Key header)\n- `GET /ledger` — permanent verification record (newest first)\n- `GET /ledger/verify` — SHA-256 chain integrity check\n- `GET /llms.txt` — full tool inventory, packet schema, and examples\n\n## Minimum viable packet\n\n```json\n{\n  \"domain\": \"governance\",\n  \"witness_count\": 2,\n  \"created_epoch\": 1700000000,\n  \"DECISION_PACKET\": {\n    \"title\": \"Short label\",\n    \"decision\": \"The exact action being taken\",\n    \"rationale\": \"Why this decision is being made\",\n    \"scope\": \"adapter\",\n    \"red_items\": [\"No coercion applied\", \"Acting within authorized role\"],\n    \"floor_items\": [\"All required parties informed\"],\n    \"way_path\": \"standard\",\n    \"execution_steps\": [\"Step 1\"],\n    \"witnesses\": [\"Alice Johnson\", \"Bob Smith\"],\n    \"witness_count\": 2\n  }\n}\n```\n\nscope: adapter (individual) | local (team) | mesh (cross-team) | canon (org-wide) | kernel (core policy)\n\nOn REJECT: read gate_results[i].reasons for the first failed gate and fix those fields.\nOn QUARANTINE: add witnesses or allow more time, then resubmit.\n\nSource: https://github.com/matharrismma/Lighthouse — Apache 2.0\n","version":"1.0.0"},"paths":{"/channels/{channel_id}/live.m3u8":{"get":{"tags":["fast-channels"],"summary":"Live Playlist","operationId":"live_playlist_channels__channel_id__live_m3u8_get","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channels/{channel_id}/seg_{n}.ts":{"get":{"tags":["fast-channels"],"summary":"Segment","operationId":"segment_channels__channel_id__seg__n__ts_get","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","title":"Channel Id"}},{"name":"n","in":"path","required":true,"schema":{"type":"string","title":"N"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channels/{channel_id}/now.json":{"get":{"tags":["fast-channels"],"summary":"Now","operationId":"now_channels__channel_id__now_json_get","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channels/now.json":{"get":{"tags":["fast-channels"],"summary":"Now All","description":"Aggregator: current + next for every channel that has a schedule today.","operationId":"now_all_channels_now_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/intake/user-content":{"post":{"tags":["user-content"],"summary":"Submit","operationId":"submit_intake_user_content_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Submission"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["user-content"],"summary":"List Subs","operationId":"list_subs_intake_user_content_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/user-content/{sid}":{"get":{"tags":["user-content"],"summary":"Get One","operationId":"get_one_intake_user_content__sid__get","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"string","title":"Sid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/user-content/{sid}/approve":{"post":{"tags":["user-content"],"summary":"Approve","operationId":"approve_intake_user_content__sid__approve_post","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"string","title":"Sid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/user-content/{sid}/reject":{"post":{"tags":["user-content"],"summary":"Reject","operationId":"reject_intake_user_content__sid__reject_post","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"string","title":"Sid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/user-content/{sid}/vote":{"post":{"tags":["user-content"],"summary":"Vote","operationId":"vote_intake_user_content__sid__vote_post","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"string","title":"Sid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/periodical":{"get":{"tags":["periodicals"],"summary":"List Collections","description":"Return the public catalog, redacting non-verified collections by default.","operationId":"list_collections_periodical_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/periodical/{collection_id}":{"get":{"tags":["periodicals"],"summary":"List Issues","operationId":"list_issues_periodical__collection_id__get","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","title":"Collection Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/periodical/{collection_id}/{filename}":{"get":{"tags":["periodicals"],"summary":"Serve Issue","operationId":"serve_issue_periodical__collection_id___filename__get","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","title":"Collection Id"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"verified","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Verified"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/curriculum":{"post":{"tags":["submissions"],"summary":"Submit Curriculum","operationId":"submit_curriculum_intake_curriculum_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurriculumSubmission"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["submissions"],"summary":"List Curriculum","operationId":"list_curriculum_intake_curriculum_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/curriculum/{sid}/approve":{"post":{"tags":["submissions"],"summary":"Approve Curriculum","operationId":"approve_curriculum_intake_curriculum__sid__approve_post","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"string","title":"Sid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/curriculum/{sid}/reject":{"post":{"tags":["submissions"],"summary":"Reject Curriculum","operationId":"reject_curriculum_intake_curriculum__sid__reject_post","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"string","title":"Sid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/recipe":{"post":{"tags":["submissions"],"summary":"Submit Recipe","operationId":"submit_recipe_intake_recipe_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeSubmission"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["submissions"],"summary":"List Recipe","operationId":"list_recipe_intake_recipe_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/recipe/{sid}/approve":{"post":{"tags":["submissions"],"summary":"Approve Recipe","operationId":"approve_recipe_intake_recipe__sid__approve_post","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"string","title":"Sid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/recipe/{sid}/reject":{"post":{"tags":["submissions"],"summary":"Reject Recipe","operationId":"reject_recipe_intake_recipe__sid__reject_post","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"string","title":"Sid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/engine/queue":{"get":{"tags":["engine-feed"],"summary":"List Queue","operationId":"list_queue_engine_queue_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/engine/queue/{qid}":{"get":{"tags":["engine-feed"],"summary":"Get One","operationId":"get_one_engine_queue__qid__get","parameters":[{"name":"qid","in":"path","required":true,"schema":{"type":"string","title":"Qid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/engine/queue/{qid}/approve":{"post":{"tags":["engine-feed"],"summary":"Approve","operationId":"approve_engine_queue__qid__approve_post","parameters":[{"name":"qid","in":"path","required":true,"schema":{"type":"string","title":"Qid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/engine/queue/{qid}/reject":{"post":{"tags":["engine-feed"],"summary":"Reject","operationId":"reject_engine_queue__qid__reject_post","parameters":[{"name":"qid","in":"path","required":true,"schema":{"type":"string","title":"Qid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/engine/queue.stats":{"get":{"tags":["engine-feed"],"summary":"Stats","operationId":"stats_engine_queue_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/shepherd/context":{"get":{"tags":["shepherd"],"summary":"Context","operationId":"context_shepherd_context_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"k","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":5,"title":"K"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shepherd/corpus.stats":{"get":{"tags":["shepherd"],"summary":"Corpus Stats","operationId":"corpus_stats_shepherd_corpus_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wallet/operator-address":{"get":{"tags":["wallet"],"summary":"Get Operator Address","operationId":"get_operator_address_wallet_operator_address_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wallet/record-tip":{"post":{"tags":["wallet"],"summary":"Record Tip","operationId":"record_tip_wallet_record_tip_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TipRecord"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wallet/record-payout":{"post":{"tags":["wallet"],"summary":"Record Payout","description":"Operator-only (in Phase 2, gate this with auth). Logs an outgoing payout for transparency.","operationId":"record_payout_wallet_record_payout_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wallet/transparency":{"get":{"tags":["wallet"],"summary":"Transparency","operationId":"transparency_wallet_transparency_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wallet/verify-pending":{"post":{"tags":["wallet"],"summary":"Verify Pending","description":"Sweep transparency_log for unverified entries; check each against Base RPC; mark verified.","operationId":"verify_pending_wallet_verify_pending_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wallet/onchain":{"get":{"tags":["wallet"],"summary":"Onchain Snapshot","description":"Read live balance from Base RPC. No keys involved — RPC is read-only public.","operationId":"onchain_snapshot_wallet_onchain_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wallet/analytics":{"get":{"tags":["wallet"],"summary":"Analytics Summary","operationId":"analytics_summary_wallet_analytics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["wallet"],"summary":"Record Analytics","description":"Counter-only. No PII, no IP, no session id stored. Caller dedupes per session client-side.","operationId":"record_analytics_wallet_analytics_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wallet/help":{"get":{"tags":["wallet"],"summary":"Help Content","operationId":"help_content_wallet_help_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/outreach/targets":{"get":{"tags":["outreach"],"summary":"List Targets","operationId":"list_targets_outreach_targets_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"archetype","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Archetype"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/target":{"post":{"tags":["outreach"],"summary":"Upsert Target","operationId":"upsert_target_outreach_target_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/status":{"post":{"tags":["outreach"],"summary":"Change Status","operationId":"change_status_outreach_status_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/log":{"post":{"tags":["outreach"],"summary":"Log Event","operationId":"log_event_outreach_log_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["outreach"],"summary":"Read Log","operationId":"read_log_outreach_log_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/summary":{"get":{"tags":["outreach"],"summary":"Summary","operationId":"summary_outreach_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/outreach/templates":{"get":{"tags":["outreach"],"summary":"List Templates","operationId":"list_templates_outreach_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/cards/_warm":{"post":{"tags":["cards"],"summary":"Warm Caches","description":"Pre-build the unified-cards cache + inverted index. Useful in startup hooks\nto avoid paying the cold-cache cost on the first user walk (LOOP 49).","operationId":"warm_caches_cards__warm_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/cards/working-set":{"get":{"tags":["cards"],"summary":"Working Set Stats","operationId":"working_set_stats_cards_working_set_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/cards/stats":{"get":{"tags":["cards"],"summary":"Library Stats","operationId":"library_stats_cards_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/cards/{card_id}":{"get":{"tags":["cards"],"summary":"Get Card","operationId":"get_card_cards__card_id__get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cards":{"get":{"tags":["cards"],"summary":"List Cards","operationId":"list_cards_cards_get","parameters":[{"name":"shelf","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shelf"}},{"name":"box","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Box"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"lifecycle","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lifecycle"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["cards"],"summary":"Create Card","operationId":"create_card_cards_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cards/{card_id}/promote":{"post":{"tags":["cards"],"summary":"Promote Card","operationId":"promote_card_cards__card_id__promote_post","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cards/{card_id}/retract":{"post":{"tags":["cards"],"summary":"Retract Card","operationId":"retract_card_cards__card_id__retract_post","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cards/{card_id}/connections":{"get":{"tags":["cards"],"summary":"Card Connections","operationId":"card_connections_cards__card_id__connections_get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/connections":{"post":{"tags":["cards"],"summary":"Create Connection","operationId":"create_connection_connections_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cards/walk":{"post":{"tags":["cards"],"summary":"Walk Cards","description":"The signature operation: search → walk-card.\nFirst move: check the query-fingerprint cache. If we've solved this question\nbefore and the cached walk's cards are still live, return it — no re-search.\nOtherwise run the search, persist the walk if save_as_walk=True, and log to\nthe replay table so the next similar query can hit the cache.","operationId":"walk_cards_cards_walk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalkIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shepherd/interview":{"post":{"tags":["shepherd"],"summary":"Interview","operationId":"interview_shepherd_interview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewTurn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shepherd/abandon":{"post":{"tags":["shepherd"],"summary":"Abandon Interview","operationId":"abandon_interview_shepherd_abandon_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shepherd/intake/stats":{"get":{"tags":["shepherd"],"summary":"Intake Stats","operationId":"intake_stats_shepherd_intake_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/shepherd/intake/abandoned":{"get":{"tags":["shepherd"],"summary":"Intake Abandoned","description":"Surface queries that dropped off — operator backlog signal.\nThese are the things we should build cards for next.","operationId":"intake_abandoned_shepherd_intake_abandoned_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stacks/health":{"get":{"tags":["stacks"],"summary":"Stacks Health","operationId":"stacks_health_stacks_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/stacks/{household_id}":{"get":{"tags":["stacks"],"summary":"Get Stack","operationId":"get_stack_stacks__household_id__get","parameters":[{"name":"household_id","in":"path","required":true,"schema":{"type":"string","title":"Household Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stacks/{household_id}/paperclip":{"post":{"tags":["stacks"],"summary":"Paperclip","operationId":"paperclip_stacks__household_id__paperclip_post","parameters":[{"name":"household_id","in":"path","required":true,"schema":{"type":"string","title":"Household Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaperclipIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stacks/{household_id}/unpaperclip":{"post":{"tags":["stacks"],"summary":"Unpaperclip","operationId":"unpaperclip_stacks__household_id__unpaperclip_post","parameters":[{"name":"household_id","in":"path","required":true,"schema":{"type":"string","title":"Household Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaperclipIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stacks/{household_id}/share":{"post":{"tags":["stacks"],"summary":"Share","operationId":"share_stacks__household_id__share_post","parameters":[{"name":"household_id","in":"path","required":true,"schema":{"type":"string","title":"Household Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stacks/{household_id}/inbox":{"get":{"tags":["stacks"],"summary":"Inbox","operationId":"inbox_stacks__household_id__inbox_get","parameters":[{"name":"household_id","in":"path","required":true,"schema":{"type":"string","title":"Household Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stacks/{household_id}/fork":{"post":{"tags":["stacks"],"summary":"Fork","operationId":"fork_stacks__household_id__fork_post","parameters":[{"name":"household_id","in":"path","required":true,"schema":{"type":"string","title":"Household Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForkIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stacks/{household_id}/note":{"post":{"tags":["stacks"],"summary":"Note","description":"Author a household-private note card into your own stack.","operationId":"note_stacks__household_id__note_post","parameters":[{"name":"household_id","in":"path","required":true,"schema":{"type":"string","title":"Household Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__stacks__NoteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stacks/{household_id}/tip":{"post":{"tags":["stacks"],"summary":"Tip","description":"Record a tip for a card author. Routes through the existing wallet\ntransparency log so tips are auditable and counts roll up into card metrics.","operationId":"tip_stacks__household_id__tip_post","parameters":[{"name":"household_id","in":"path","required":true,"schema":{"type":"string","title":"Household Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TipIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cards/{card_id}/helpful":{"post":{"tags":["promotion"],"summary":"Vote Helpful","operationId":"vote_helpful_cards__card_id__helpful_post","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cards/{card_id}/not-helpful":{"post":{"tags":["promotion"],"summary":"Vote Not Helpful","operationId":"vote_not_helpful_cards__card_id__not_helpful_post","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cards/{card_id}/flag":{"post":{"tags":["promotion"],"summary":"Flag Card","operationId":"flag_card_cards__card_id__flag_post","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cards/{card_id}/cite":{"post":{"tags":["promotion"],"summary":"Cite Card","description":"Atomic counter increment. Called by the system when a connection\ncard is authored linking TO this card.","operationId":"cite_card_cards__card_id__cite_post","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/promotion/queue":{"get":{"tags":["promotion"],"summary":"Get Queue","operationId":"get_queue_promotion_queue_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"pending","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/promotion/approve":{"post":{"tags":["promotion"],"summary":"Approve","operationId":"approve_promotion_approve_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueDecision"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/promotion/reject":{"post":{"tags":["promotion"],"summary":"Reject","operationId":"reject_promotion_reject_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueDecision"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/promotion/scan":{"post":{"tags":["promotion"],"summary":"Run Scan","operationId":"run_scan_promotion_scan_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/promotion/health":{"get":{"tags":["promotion"],"summary":"Health","operationId":"health_promotion_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/walks/cache/check":{"post":{"tags":["walks-cache"],"summary":"Cache Check Endpoint","operationId":"cache_check_endpoint_walks_cache_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CacheCheckIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/walks/replay/log":{"post":{"tags":["walks-cache"],"summary":"Replay Log Endpoint","operationId":"replay_log_endpoint_walks_replay_log_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplayLogIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/walks/replay/recent":{"get":{"tags":["walks-cache"],"summary":"Replay Recent","operationId":"replay_recent_walks_replay_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/walks/prefetch":{"post":{"tags":["walks-cache"],"summary":"Prefetch Endpoint","operationId":"prefetch_endpoint_walks_prefetch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrefetchIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/walks/cache/stats":{"get":{"tags":["walks-cache"],"summary":"Cache Stats","operationId":"cache_stats_walks_cache_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/atlas/paths":{"get":{"tags":["atlas"],"summary":"List Paths","operationId":"list_paths_atlas_paths_get","parameters":[{"name":"lifecycle","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lifecycle"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["atlas"],"summary":"Author Path","description":"Operator authors a curated Atlas path. Goes straight to public_review.","operationId":"author_path_atlas_paths_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtlasPathIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/atlas/paths/featured":{"get":{"tags":["atlas"],"summary":"Featured","operationId":"featured_atlas_paths_featured_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/atlas/paths/{walk_card_id}":{"get":{"tags":["atlas"],"summary":"Get Path","operationId":"get_path_atlas_paths__walk_card_id__get","parameters":[{"name":"walk_card_id","in":"path","required":true,"schema":{"type":"string","title":"Walk Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/atlas/paths/{walk_card_id}/canonize":{"post":{"tags":["atlas"],"summary":"Canonize","description":"Operator approval — promote walk to public + mark visibility public.","operationId":"canonize_atlas_paths__walk_card_id__canonize_post","parameters":[{"name":"walk_card_id","in":"path","required":true,"schema":{"type":"string","title":"Walk Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/atlas/paths/{walk_card_id}/replay":{"post":{"tags":["atlas"],"summary":"Replay","description":"Re-walk: increment walks_through_count, warm prefetch for the path's cards.","operationId":"replay_atlas_paths__walk_card_id__replay_post","parameters":[{"name":"walk_card_id","in":"path","required":true,"schema":{"type":"string","title":"Walk Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notes":{"post":{"tags":["notes"],"summary":"Author Note","operationId":"author_note_notes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__notes__NoteIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notes/by_card/{card_id}":{"get":{"tags":["notes"],"summary":"By Card","operationId":"by_card_notes_by_card__card_id__get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notes/by_card/{card_id}/balance":{"get":{"tags":["notes"],"summary":"By Card Balance","operationId":"by_card_balance_notes_by_card__card_id__balance_get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notes/{note_id}/rate":{"post":{"tags":["notes"],"summary":"Rate Note","operationId":"rate_note_notes__note_id__rate_post","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notes/{note_id}/flag":{"post":{"tags":["notes"],"summary":"Flag Note","operationId":"flag_note_notes__note_id__flag_post","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rebalance/queue":{"get":{"tags":["rebalance"],"summary":"Get Queue","operationId":"get_queue_rebalance_queue_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"pending","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rebalance/approve":{"post":{"tags":["rebalance"],"summary":"Approve","operationId":"approve_rebalance_approve_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Decision"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rebalance/reject":{"post":{"tags":["rebalance"],"summary":"Reject","operationId":"reject_rebalance_reject_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Decision"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rebalance/reports":{"get":{"tags":["rebalance"],"summary":"Get Reports","operationId":"get_reports_rebalance_reports_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/daily-card":{"get":{"tags":["daily-card"],"summary":"Daily Card","operationId":"daily_card_daily_card_get","parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/daily-card/pool":{"get":{"tags":["daily-card"],"summary":"Daily Card Pool","operationId":"daily_card_pool_daily_card_pool_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/witness-gate/health":{"get":{"tags":["witness-gate"],"summary":"Health","operationId":"health_witness_gate_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/witness-gate/card/{card_id}":{"get":{"tags":["witness-gate"],"summary":"Card Witnesses","operationId":"card_witnesses_witness_gate_card__card_id__get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/witness-gate/missing":{"get":{"tags":["witness-gate"],"summary":"Missing","operationId":"missing_witness_gate_missing_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/witness-gate/channel/{channel_id}":{"get":{"tags":["witness-gate"],"summary":"Channel Pool Witnesses","operationId":"channel_pool_witnesses_witness_gate_channel__channel_id__get","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/agents/daily.json":{"get":{"tags":["agents"],"summary":"Agents Daily","operationId":"agents_daily_agents_daily_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/agents/feed.json":{"get":{"tags":["agents"],"summary":"Agents Feed","operationId":"agents_feed_agents_feed_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/feed/walks.rss":{"get":{"tags":["feeds"],"summary":"Walks Rss","operationId":"walks_rss_feed_walks_rss_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/deep":{"get":{"tags":["health"],"summary":"Deep Health","operationId":"deep_health_health_deep_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/c/{card_id}":{"get":{"tags":["card-ssr"],"summary":"Card Ssr","operationId":"card_ssr_c__card_id__get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shema":{"get":{"tags":["shema"],"summary":"Shema","operationId":"shema_shema_get","parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keep/dashboard":{"get":{"tags":["keep"],"summary":"Dashboard","operationId":"dashboard_keep_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/keep/state":{"get":{"tags":["keep"],"summary":"Keep State","description":"Return current allowed IPs + the requester's IP. Caller must be allowed.","operationId":"keep_state_keep_state_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/keep/pin":{"post":{"tags":["keep"],"summary":"Keep Pin","description":"Add an IP to the file allowlist (default: requester's own IP).","operationId":"keep_pin_keep_pin_post","parameters":[{"name":"ip","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keep/revoke":{"post":{"tags":["keep"],"summary":"Keep Revoke","description":"Remove an IP from the file allowlist (the requester cannot revoke themselves).","operationId":"keep_revoke_keep_revoke_post","parameters":[{"name":"ip","in":"query","required":true,"schema":{"type":"string","title":"Ip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keep/issue-token":{"post":{"tags":["keep"],"summary":"Keep Issue Token","description":"Mint a short-lived admit token. The caller must already be allowed.","operationId":"keep_issue_token_keep_issue_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/keep/clear-visits":{"post":{"tags":["keep"],"summary":"Keep Clear Visits","description":"Wipe historical visit logs. Useful once operator IPs are excluded going forward,\nso the past mixed data (where operator hits were counted) is reset to a clean baseline.\nCaller must be allowed.","operationId":"keep_clear_visits_keep_clear_visits_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/craft":{"post":{"tags":["craft"],"summary":"Craft Endpoint","description":"Retrieve + craft + store, or recall if signature seen before.\n\nBody: {context: \"health\"|..., profile: [{metric, state, value?}, ...]}\nReturns: {recalled: bool, signature, entry: {...}}","operationId":"craft_endpoint_craft_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/craft/list":{"get":{"tags":["craft"],"summary":"Craft List","description":"Admin view of crafted entries by context (gated to /keep allowlist).","operationId":"craft_list_craft_list_get","parameters":[{"name":"context","in":"query","required":false,"schema":{"type":"string","default":"health","title":"Context"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keep/mcp-stats":{"get":{"tags":["keep"],"summary":"Keep Mcp Stats","description":"MCP traffic summary — counts and recent requests captured via the\nentry-time tap. FastMCP is mounted as a sub-app; its streaming\nresponses bypass the normal access log, so we capture entry events\nhere. Operator-only.","operationId":"keep_mcp_stats_keep_mcp_stats_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keep/access-log":{"get":{"tags":["keep"],"summary":"Keep Access Log","description":"Return the recent /keep.html access log (full IPs, allowed + denied).\nThe caller must already be allowed.","operationId":"keep_access_log_keep_access_log_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keep/admit":{"get":{"tags":["keep"],"summary":"Keep Admit","description":"Consume an admit token; the requester's IP is added to the allowlist.","operationId":"keep_admit_keep_admit_get","parameters":[{"name":"t","in":"query","required":true,"schema":{"type":"string","title":"T"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/recent":{"get":{"tags":["visits"],"summary":"Visits Recent","description":"Return the most recent visit records (privacy-scrubbed).","operationId":"visits_recent_visits_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/stats":{"get":{"tags":["visits"],"summary":"Visits Stats","description":"Aggregate counts by ua_class, country, path, and status.","operationId":"visits_stats_visits_stats_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/trivia/score":{"post":{"tags":["trivia"],"summary":"Trivia Submit Score","description":"Record one Bible-trivia score for the leaderboard.","operationId":"trivia_submit_score_trivia_score_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_TriviaScoreIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/trivia/leaderboard":{"get":{"tags":["trivia"],"summary":"Trivia Leaderboard","description":"Top Bible-trivia scores, highest first.","operationId":"trivia_leaderboard_trivia_leaderboard_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":15,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake":{"post":{"summary":"Intake","description":"Socratic intake: return 2 targeted questions before the four-gate seal.\n\nIdentifies the 2 scaffold axes most critical for verification of this\ndomain, then uses Claude Haiku to phrase them as questions specific to\nthe claim text. Falls back to axis-template questions if Haiku is\nunavailable or the API key is not configured.\n\nThe caller (try.html) shows these questions in the seal block. Answers\nare appended to the claim text before posting to /seal, enriching the\npacket for the gate verifiers.","operationId":"intake_intake_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntakeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/status/{item_id}":{"get":{"tags":["intake"],"summary":"Intake Status","description":"Public status check for a Scribe submission.\n\nReturns the current lane the item is in:\n  - \"promoted\"  : appears in the almanac with this id as its source\n  - \"pending\"   : still in the working queue (data/intake/queue.jsonl)\n  - \"archived\"  : moved to quarantine (operator decided no)\n  - \"not_found\" : id is unknown (cleared or never existed)\n\nNo auth — anyone with the receipt id can check their own submission.\nRate-limited at the default bucket (60/min/IP) so this can't be\nused to mine the queue with a brute-force scan.","operationId":"intake_status_intake_status__item_id__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scribe/mine":{"get":{"tags":["humans"],"summary":"Scribe Mine","description":"List all writings submitted by this visitor across all lanes,\nnewest first, with current status resolved per item.","operationId":"scribe_mine_scribe_mine_get","parameters":[{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scribe/recent":{"get":{"tags":["humans"],"summary":"Scribe Recent","description":"Public feed of recent intake — title + first 200 chars + status.\nNo visitor_id, no IP, no PII. Useful as a stream of what the keeping\nis currently considering.","operationId":"scribe_recent_scribe_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/misalignments/disagree":{"post":{"tags":["humans"],"summary":"Misalignments Disagree","description":"Record that a user thinks a specific packet's verdict is wrong.\nAnonymous via opaque visitor_id; the operator triages.\n\nRoutes the flag into the same `data/misalignments/log.jsonl` substrate\nas engine-detected misalignments. The shared lane is intentional —\none place to triage everything that didn't land where the engine\nthought it would.","operationId":"misalignments_disagree_misalignments_disagree_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_DisagreeSubmit"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/misalignments/mine":{"get":{"tags":["humans"],"summary":"Misalignments Mine","description":"A visitor's own disagreements with the engine, newest first.","operationId":"misalignments_mine_misalignments_mine_get","parameters":[{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/misalignments/recent":{"get":{"tags":["humans"],"summary":"Misalignments Recent","description":"Public feed of recent user-submitted disagreements with the\nengine — anonymized. Visible accountability for what the keeping\nis being asked to revisit.","operationId":"misalignments_recent_misalignments_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/witness/walk":{"post":{"tags":["humans"],"summary":"Witness Walk Submit","description":"A named witness attests to a walker's BROTHERS gate.\n\nNo witness identity infrastructure required — anyone with the\nwalker's share link (walker_visitor_id + walk_id) can put their\nname to it. The walker chose to share; the witness chose to sign.","operationId":"witness_walk_submit_witness_walk_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_WitnessSubmit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["humans"],"summary":"Witness Walk List","description":"List attestations on a specific walk, or all on this walker if\nwalk_id is omitted. The walker's own visitor_id authenticates the\nrequest — opaque, never tied to PII.","operationId":"witness_walk_list_witness_walk_get","parameters":[{"name":"walker_visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Walker Visitor Id"}},{"name":"walk_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Walk Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/witness/walk/context":{"get":{"tags":["humans"],"summary":"Witness Walk Context","description":"What a prospective witness sees before attesting: the situation,\nthe walker's BROTHERS-gate answer (if any), and the count of prior\nattestations. Reads from the coach journal for the walk record.","operationId":"witness_walk_context_witness_walk_context_get","parameters":[{"name":"walker_visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Walker Visitor Id"}},{"name":"walk_id","in":"query","required":true,"schema":{"type":"string","title":"Walk Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scribe/{item_id}":{"get":{"tags":["humans"],"summary":"Scribe One","description":"Full record for a single writing: text, contributor (if any),\ncurrent status, signed promotion receipt if promoted.","operationId":"scribe_one_scribe__item_id__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/receipts/promote":{"post":{"tags":["intake"],"summary":"Receipts Mint Promotion","description":"Mint an Ed25519-signed promotion receipt.\n\nOperator-only. Call this when promoting an intake item to the\nalmanac so the contributor has a soulbound proof tied to their\nhandle. The receipt is verifiable offline by anyone holding the\nengine's public key.","operationId":"receipts_mint_promotion_receipts_promote_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MintReceiptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/receipts/{intake_id}":{"get":{"tags":["intake"],"summary":"Receipts Lookup","description":"Public lookup. Anyone with the receipt id can retrieve their\nsigned promotion proof — offline-verifiable against the engine's\npublic key at /identity/pubkey.","operationId":"receipts_lookup_receipts__intake_id__get","parameters":[{"name":"intake_id","in":"path","required":true,"schema":{"type":"string","title":"Intake Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/receipts":{"get":{"tags":["intake"],"summary":"Receipts List Endpoint","description":"List receipts. Public; optionally filtered by contributor handle.\nUseful for a contributor to enumerate everything that was promoted.","operationId":"receipts_list_endpoint_receipts_get","parameters":[{"name":"handle","in":"query","required":false,"schema":{"type":"string","default":"","title":"Handle"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact":{"post":{"tags":["intake"],"summary":"Contact Submit","description":"Leave Matt a message. Public, rate-limited.","operationId":"contact_submit_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ContactSubmit"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox":{"get":{"tags":["intake"],"summary":"Inbox Index","description":"Operator-only console feed.\n\nReturns three lanes:\n  - messages: contact form submissions\n  - intake: working queue (items awaiting decomposition)\n  - quarantine: flushed items (the trash; can be cleaned)\n\nRead/dismissed/flushed state lives per-id in data/inbox/state.json.\nBy default, loopback (127.x) traffic is filtered out so operator\ntesting doesn't pollute the queue. Pass include_local=true to see\neverything.","operationId":"inbox_index_inbox_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"include_local","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Local"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/flush":{"post":{"tags":["intake"],"summary":"Intake Flush","description":"Move an intake item to quarantine. Operator-only.\n\nQuarantine is the trash; items there get cleaned periodically.\nUse this when an intake item has any issue — wrong shape, spam,\nout of scope, malformed.","operationId":"intake_flush_intake_flush_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_IntakeFlush"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/quarantine/airlock":{"post":{"tags":["intake"],"summary":"Quarantine Airlock","description":"Sort one quarantine item out through the airlock. Operator-only.\n\nQuarantine is hazmat. Nothing leaves except through this airlock —\nno bulk clean, no sweep. Each item gets a deliberate decision:\nrestore, preserve, or destroy.","operationId":"quarantine_airlock_quarantine_airlock_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_QuarantineAirlock"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/process":{"post":{"tags":["intake"],"summary":"Intake Process","description":"Run the worker over pending intake items. Operator-only.\n\nEach item gets a projection attached: composite verdict, axis\noverlaps, closest precedent, archetype combination, suggested\npath. The worker does not move items between lanes — the operator\ndecides what to do based on what surfaces.","operationId":"intake_process_intake_process_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_IntakeProcess"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/process/{item_id}":{"post":{"tags":["intake"],"summary":"Intake Process One","description":"Process a single intake item by id (re-runs even if previously\nprocessed).","operationId":"intake_process_one_intake_process__item_id__post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_IntakeProcessOne"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intake/{item_id}":{"get":{"tags":["intake"],"summary":"Intake Get One","description":"Operator-only: fetch a single intake item including its projection.","operationId":"intake_get_one_intake__item_id__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/build-queue":{"get":{"tags":["public"],"summary":"Build Queue List","description":"Public listing of capability gaps with the math chains that would\nclose each one. Open status: actively wanted. Declined status: no\nmath chain exists; engine deliberately doesn't try.","operationId":"build_queue_list_build_queue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/misalignments":{"get":{"tags":["intake"],"summary":"Misalignments List","description":"Operator-only: list logged misalignments with their review state.\n\nReturns counts (pending / archived / promoted / bugs) plus the items\nthemselves, newest first. By default, loopback (127.x) traffic is\nfiltered out so operator testing doesn't pollute the queue. Pass\ninclude_local=true to see everything.","operationId":"misalignments_list_misalignments_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"include_local","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Local"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/misalignments/review":{"post":{"tags":["intake"],"summary":"Misalignments Review","description":"Operator decision on one misalignment.\n\narchive  — user claim was wrong; engine correctly didn't confirm\npromote  — engine has a coverage gap; append to build queue\n           (claim_pattern + needed_math are required)\n           Optionally also adds a runtime NL→domain routing rule\n           if routing_pattern + routing_domain are provided.\nbug      — verifier misbehaved; flag for fix\npending  — undo a prior decision","operationId":"misalignments_review_misalignments_review_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MisalignmentReview"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/agent/rules/runtime":{"get":{"tags":["intake"],"summary":"Agent Runtime Rules","description":"Operator: list the runtime NL→domain dispatch rules that have\nbeen promoted from the misalignment review queue.","operationId":"agent_runtime_rules_agent_rules_runtime_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/inbox/mark":{"post":{"tags":["intake"],"summary":"Inbox Mark","description":"Mark an inbox item.\n\nActions:\n  - read    : mark as read\n  - unread  : restore to unread\n  - dismiss : hide from default view (still in original lane)\n  - flush   : move from intake → quarantine (intake items only)","operationId":"inbox_mark_inbox_mark_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_InboxMark"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/archetypes":{"get":{"tags":["archetypes"],"summary":"Archetypes List","description":"Browseable catalog of all archetypes in the substrate.","operationId":"archetypes_list_archetypes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/archetypes/{archetype_id}":{"get":{"tags":["archetypes"],"summary":"Archetypes Get","description":"Full entry for one archetype.","operationId":"archetypes_get_archetypes__archetype_id__get","parameters":[{"name":"archetype_id","in":"path","required":true,"schema":{"type":"string","title":"Archetype Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/archetype/recognize":{"post":{"tags":["archetypes"],"summary":"Archetype Recognize","description":"Surface the closest Biblical archetype shape for a situation.\n\nThe engine never says 'you are Jonah.' It surfaces 'this pattern\nresembles Jonah; here are the markers that matched.' The human\nnames whether the shape fits.","operationId":"archetype_recognize_archetype_recognize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ArchetypeRecognizeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/walk":{"post":{"tags":["walk"],"summary":"Walk Situation","description":"Walk a situation through the Coach OS.\n\nReturns a composed view: patterns (archetypes), scripture (Layer 0\npassages), protocols (Mt 18 conflict, discernment, confession,\nwitness, test-spirits, reproof — when they apply), closest\nprecedent, and the four gates as prompts to walk.\n\nThe engine does not answer. It surfaces the field and asks the\nquestions. The user walks.","operationId":"walk_situation_walk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_WalkRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/walk/protocols":{"get":{"tags":["walk"],"summary":"Walk Protocols Index","description":"List the Scripture-defined protocols the engine recognizes.","operationId":"walk_protocols_index_walk_protocols_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/parable":{"get":{"tags":["humans"],"summary":"Parable Get","description":"Return the closest parable to a situation, or a random one if empty.\n\nDoorway form of the engine: those who walk into the parable find\nmore (the trail, the Coach, the gates). Those who do not, leave\nwith a story — which is already a small step.","operationId":"parable_get_parable_get","parameters":[{"name":"situation","in":"query","required":false,"schema":{"type":"string","default":"","title":"Situation"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/parable/seeds":{"get":{"tags":["humans"],"summary":"Parable Seeds Index","description":"List all parable seeds — id, source packet, gate, axes, preview.","operationId":"parable_seeds_index_parable_seeds_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/apothecary":{"get":{"tags":["humans"],"summary":"Apothecary Compound","description":"For a stated condition, compound a remedy from the substrate.\n\nReturns one packet per ingredient slot: Scripture, Proverb, Protocol,\nTraining, Mind, Parable, FieldKit, Body, Philosopher, Father, Almanac.\nConditional slots return null when retrieval has no strong match.\n\nEngine still eliminates; the ingredients are existing packets ranked\nby axis overlap + keyword match. The compounding is rhetorical form.\n\n`lang` selects the reader's language. Two effects:\n  1. Incoming condition is MT'd to English for retrieval (so a Spanish\n     \"ansiedad\" matches an English \"anxiety\" packet) — the original\n     text is preserved in the response and saved to the journal.\n  2. Scripture-kind result slots swap to the parallel PD translation\n     (e.g. Reina-Valera 1909 when lang=es). Engine-authored slots\n     route through the MT adapter.\n\nIf `visitor_id` is supplied AND the engine found a non-empty compound,\nthe result is saved to the visitor's apothecary journal so it can be\nre-opened from /apothecary/mine. visitor_id must be 8-32 lowercase hex.","operationId":"apothecary_compound_apothecary_get","parameters":[{"name":"condition","in":"query","required":false,"schema":{"type":"string","default":"","title":"Condition"}},{"name":"visitor_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Visitor Id"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/apothecary/conditions":{"get":{"tags":["humans"],"summary":"Apothecary Conditions","description":"Curated list of common conditions to seed the input as one-click chips.","operationId":"apothecary_conditions_apothecary_conditions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/apothecary/languages":{"get":{"tags":["humans"],"summary":"Apothecary Languages","description":"Languages with a parallel PD Bible swap available.\n\nEnglish is always present (canonical substrate). Other entries list a\nlanguage code and the translation that will be swapped in for Scripture\nslots. As more parallel translations are ingested (CUV for zh, Louis\nSegond for fr, etc.) they'll appear here automatically.","operationId":"apothecary_languages_apothecary_languages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/scripture/catalog":{"get":{"tags":["humans"],"summary":"Scripture Catalog","description":"Catalog of every PD Bible translation in the substrate, with coverage stats.\n\nUsed by the Atlas of Bibles lens. Each entry includes language, translation\nname, year, source URL, license, total verse count, and book coverage.","operationId":"scripture_catalog_scripture_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/places":{"get":{"tags":["humans"],"summary":"Places List","description":"List geographic entries from Easton's Bible Dictionary (920 places).\n\nOptional filters: `letter` (A-Z first character) or `search` (substring\nover name + text). Each row carries a short preview + ref_count so the\nPlaces lens can render a scannable A-Z directory.","operationId":"places_list_places_get","parameters":[{"name":"letter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Letter"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/places/by-ref":{"get":{"tags":["humans"],"summary":"Places By Ref","description":"For a Scripture reference (e.g. \"Bethlehem 5:2\"), list every place\nin Easton's that cites this verse. Cross-links the Atlas of Bibles\nparallel viewer into the geographic substrate.","operationId":"places_by_ref_places_by_ref_get","parameters":[{"name":"ref","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/places/stats":{"get":{"tags":["humans"],"summary":"Places Stats","description":"Quick counts + attribution for the Places lens header.","operationId":"places_stats_places_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/places/{slug}":{"get":{"tags":["humans"],"summary":"Places Get","description":"Full entry for one place (or any Easton entry, by slug).","operationId":"places_get_places__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/easton/{slug}":{"get":{"tags":["humans"],"summary":"Easton Get","description":"Full Easton entry for any slug — people, concepts, objects, places.","operationId":"easton_get_easton__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scripture/lookup":{"get":{"tags":["humans"],"summary":"Scripture Lookup One","description":"Quick single-language verse/range/chapter lookup.\n\nLighter than /scripture/parallel — fetches one translation, not all 22.\nUseful for scripts, agents, and any page that wants Scripture in one\nlanguage without paying for the parallel comparison.\n\nAccepts: \"Proverbs 12:25\", \"Matthew 5:3-12\", \"Psalm 23\".","operationId":"scripture_lookup_one_scripture_lookup_get","parameters":[{"name":"ref","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ref"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scripture/parallel":{"get":{"tags":["humans"],"summary":"Scripture Parallel","description":"For a verse reference, return that text in every available translation.\n\nAccepts: \"Proverbs 12:25\" (single verse), \"Matthew 5:3-12\" (range), or\n\"Psalm 23\" (whole chapter). Missing translations come back with text=null\nso the UI can render \"not yet available\" rows.\n\nOptional `langs` is a comma-separated list of language codes\n(e.g. \"en,es,fr\") to restrict results. Omit for all 22 translations.","operationId":"scripture_parallel_scripture_parallel_get","parameters":[{"name":"ref","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ref"}},{"name":"langs","in":"query","required":false,"schema":{"type":"string","default":"","title":"Langs"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/i18n/strings":{"get":{"tags":["humans"],"summary":"I18N Strings","description":"Return the full UI string dictionary translated into `lang`.\n\nFirst call for a new language translates via the MT adapter and caches\nto disk. Subsequent calls serve from cache (instant, free).\nEnglish is always instant (no translation needed).","operationId":"i18n_strings_i18n_strings_get","parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/i18n/languages":{"get":{"tags":["humans"],"summary":"I18N Languages","description":"List available UI languages with native names.","operationId":"i18n_languages_i18n_languages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mt/status":{"get":{"tags":["humans"],"summary":"Mt Status","description":"Which MT providers are configured (no keys echoed) and cache stats.","operationId":"mt_status_mt_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mt/translate":{"post":{"tags":["humans"],"summary":"Mt Translate","description":"Translate a string. Returns text unchanged when no provider configured.\n\nCache-first: every translation lives in `data/mt_cache/<lang>.jsonl` after\nfirst call. The provider is recorded so the operator can see which\ntranslations came from which source.","operationId":"mt_translate_mt_translate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MTTranslateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/apothecary/mine":{"get":{"tags":["humans"],"summary":"Apothecary Mine","description":"List a visitor's saved compounds, newest first.","operationId":"apothecary_mine_apothecary_mine_get","parameters":[{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/apothecary/compound/{compound_id}":{"delete":{"tags":["humans"],"summary":"Apothecary Compound Delete","operationId":"apothecary_compound_delete_apothecary_compound__compound_id__delete","parameters":[{"name":"compound_id","in":"path","required":true,"schema":{"type":"string","title":"Compound Id"}},{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/apothecary/feedback":{"post":{"tags":["humans"],"summary":"Apothecary Feedback Submit","description":"Record a visitor's signal on a compound: helped / didn't fit / walked\nit / saved. Per-visitor append-only JSONL. Aggregate stats are public\nvia /apothecary/feedback/stats; individual visitor data stays private.","operationId":"apothecary_feedback_submit_apothecary_feedback_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ApothecaryFeedbackSubmit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["humans"],"summary":"Apothecary Feedback List","description":"A visitor's own feedback history, newest first.","operationId":"apothecary_feedback_list_apothecary_feedback_get","parameters":[{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/apothecary/feedback/compound":{"get":{"tags":["humans"],"summary":"Apothecary Feedback Compound","description":"The visitor's latest rating for a specific compound (or null).","operationId":"apothecary_feedback_compound_apothecary_feedback_compound_get","parameters":[{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}},{"name":"compound_id","in":"query","required":true,"schema":{"type":"string","title":"Compound Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/apothecary/feedback/stats":{"get":{"tags":["humans"],"summary":"Apothecary Feedback Stats","description":"Public aggregate counts across all visitors' feedback.\n\nReturns counts per rating per compound_id. Useful for an operator\nconsole to see which compounds are landing. No individual visitor\ndata is exposed.","operationId":"apothecary_feedback_stats_apothecary_feedback_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/training":{"get":{"tags":["humans"],"summary":"Training List","description":"All training sequences, optionally filtered by category.\n\nEach sequence is a multi-step practical discipline: gardening,\nfitness, cooking, home, outdoor, crafts, husbandry. Body of work\nyou can walk over weeks or months.","operationId":"training_list_training_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/training/{tid}":{"get":{"tags":["humans"],"summary":"Training One","operationId":"training_one_training__tid__get","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/phonics":{"get":{"tags":["humans"],"summary":"Phonics List","operationId":"phonics_list_phonics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/phonics/{uid}":{"get":{"tags":["humans"],"summary":"Phonics One","operationId":"phonics_one_phonics__uid__get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workready":{"get":{"tags":["humans"],"summary":"Workready List","operationId":"workready_list_workready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/workready/{uid}":{"get":{"tags":["humans"],"summary":"Workready One","operationId":"workready_one_workready__uid__get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/math":{"get":{"tags":["humans"],"summary":"Math List","description":"All math curriculum units, sorted by track + unit_seq.\nTrack shape: number_sense → addition → subtraction → …","operationId":"math_list_math_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/math/{uid}":{"get":{"tags":["humans"],"summary":"Math One","description":"One math unit by id. Returns the full record with rule,\nexamples, manipulative, modes, wedges, check, prerequisites, next.","operationId":"math_one_math__uid__get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reading":{"get":{"tags":["humans"],"summary":"Reading List","operationId":"reading_list_reading_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reading/{uid}":{"get":{"tags":["humans"],"summary":"Reading One","operationId":"reading_one_reading__uid__get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/writing":{"get":{"tags":["humans"],"summary":"Writing List","operationId":"writing_list_writing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/writing/{uid}":{"get":{"tags":["humans"],"summary":"Writing One","operationId":"writing_one_writing__uid__get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/science":{"get":{"tags":["humans"],"summary":"Science List","operationId":"science_list_science_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/science/{uid}":{"get":{"tags":["humans"],"summary":"Science One","operationId":"science_one_science__uid__get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bible_curriculum":{"get":{"tags":["humans"],"summary":"Bible Curriculum List","operationId":"bible_curriculum_list_bible_curriculum_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/bible_curriculum/{uid}":{"get":{"tags":["humans"],"summary":"Bible Curriculum One","operationId":"bible_curriculum_one_bible_curriculum__uid__get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/social_studies":{"get":{"tags":["humans"],"summary":"Social Studies List","operationId":"social_studies_list_social_studies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/social_studies/{uid}":{"get":{"tags":["humans"],"summary":"Social Studies One","operationId":"social_studies_one_social_studies__uid__get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/herbs":{"get":{"tags":["humans"],"summary":"Herbs List","operationId":"herbs_list_herbs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/herbs/{hid}":{"get":{"tags":["humans"],"summary":"Herbs One","operationId":"herbs_one_herbs__hid__get","parameters":[{"name":"hid","in":"path","required":true,"schema":{"type":"string","title":"Hid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/flows":{"get":{"tags":["humans"],"summary":"Flows List","description":"List every registered flow. Optional filters:\n- audience: 'human' | 'agent' | 'robot' (default: all)\n- starts_from: 'walk' | 'apothecary' | 'curriculum' | 'any'\n  (used by UI to show flows relevant to the current page)","operationId":"flows_list_flows_get","parameters":[{"name":"audience","in":"query","required":false,"schema":{"type":"string","default":"","title":"Audience"}},{"name":"starts_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Starts From"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/flows/{flow_id}":{"get":{"tags":["humans"],"summary":"Flows Get","description":"Return one flow's full definition — useful for an agent that\nwants to introspect what the flow will do before running it.","operationId":"flows_get_flows__flow_id__get","parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","title":"Flow Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/flow/run":{"post":{"tags":["humans"],"summary":"Flow Run","description":"Execute (or resume) a flow.\n\nTo start: POST {\"flow_id\": \"walk_to_keep\", \"state\": {\"situation\": \"...\"}}\nReturns either:\n  - {\"status\": \"complete\", \"state\": ..., \"outputs\": ...}\n  - {\"status\": \"waiting_for_input\", \"state\": ..., \"expects\": \"<key>\", \"label\": \"...\"}\n  - {\"status\": \"error\", \"error\": \"...\"}\n\nTo resume a paused flow: POST again with the same run_id and the\nwaiting-for input added to state.\n\nSteward audit: every tool call inside the flow runs through the\nsame engine endpoints (which already audit) so the trail is\nconsistent. Flow-level audit lives at data/flow_runs/<run_id>.jsonl.","operationId":"flow_run_flow_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_FlowRun"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mastery/mark":{"post":{"tags":["humans"],"summary":"Mastery Mark","description":"Record a mastery state for a unit. The append-only log is\nvisitor-keyed at data/mastery/<visitor_id>.jsonl. No PII — visitor_id\nis opaque hex.","operationId":"mastery_mark_mastery_mark_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MasteryMark"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mastery/visitor":{"get":{"tags":["humans"],"summary":"Mastery Visitor","description":"Current mastery state for a visitor across every unit.\nReturns the reduced {unit_id: state} map by default; pass\ninclude_log=true for the full append-only chronology.","operationId":"mastery_visitor_mastery_visitor_get","parameters":[{"name":"visitor_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Visitor Id"}},{"name":"include_log","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Log"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mastery/check":{"get":{"tags":["humans"],"summary":"Mastery Check","description":"Advisory check: can the visitor attempt this unit?\n`prerequisites` is comma-separated unit_ids the dashboard already\nknows from the unit record; passing them in avoids a server-side\nlookup. Returns {allowed, missing, current}.","operationId":"mastery_check_mastery_check_get","parameters":[{"name":"visitor_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Visitor Id"}},{"name":"unit_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Unit Id"}},{"name":"prerequisites","in":"query","required":false,"schema":{"type":"string","default":"","title":"Prerequisites"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/curriculum":{"get":{"tags":["humans"],"summary":"Curriculum All","description":"Every unit across every curriculum track. Returned grouped by\nkind, with track + unit_seq + prerequisites + next so a UI can\nrender the progression graph without a second round-trip.","operationId":"curriculum_all_curriculum_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wedges":{"get":{"tags":["humans"],"summary":"Wedges List","operationId":"wedges_list_wedges_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wedges/{wid}":{"get":{"tags":["humans"],"summary":"Wedges One","operationId":"wedges_one_wedges__wid__get","parameters":[{"name":"wid","in":"path","required":true,"schema":{"type":"string","title":"Wid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/all":{"get":{"tags":["humans"],"summary":"Export All","description":"Return everything the engine knows tied to this visitor.\n\nIncludes: scribe writings, walk journals, daily comments,\napothecary feedback, misalignment-disagree submissions, witness\nattestations, polymathic runs, crafted entries, Steward audit\nrows scoped to this visitor.\n\nThe visitor controls their own data. Run this; save the JSON\nto microSD; you can carry it to another deployment of the\nengine and re-import (re-import is a future pass). Visitor IDs\nare opaque hex; no PII is included in this export.\n\nOperator audit: emits steward_audit row with action=export_all.","operationId":"export_all_export_all_get","parameters":[{"name":"visitor_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Visitor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/steward/corridor":{"get":{"tags":["humans"],"summary":"Steward Corridor Get","description":"Return the corridor currently bound to the visitor. Mints a\ndefault if none. Visitor IDs are opaque hex; no PII tracked.","operationId":"steward_corridor_get_steward_corridor_get","parameters":[{"name":"visitor_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Visitor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["humans"],"summary":"Steward Corridor Set","description":"Pin a corridor template to the visitor. Templates:\n`default`, `apothecary_morning`, `phonics_kids_reading`,\n`workready_practice`, `exploration`.","operationId":"steward_corridor_set_steward_corridor_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_StewardCorridorSet"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/steward/templates":{"get":{"tags":["humans"],"summary":"Steward Templates","description":"List all corridor templates the engine knows about. Useful\nfor the Composer to populate a \"lane preset\" picker.","operationId":"steward_templates_steward_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/steward/actions":{"get":{"tags":["humans"],"summary":"Steward Actions","description":"The action allowlist Steward knows about. Endpoints that gate\nvia Steward must use one of these names.","operationId":"steward_actions_steward_actions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/steward/audit":{"get":{"tags":["humans"],"summary":"Steward Audit","description":"Recent Steward audit packets. Operator-gated — same\nallowlist as /keep. Public visitors get 404 (hide existence).","operationId":"steward_audit_steward_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/steward/request":{"post":{"tags":["humans"],"summary":"Steward Request Admission","description":"Full admit/consume flow exposed to clients. Used by endpoints\nthat want a bound action token (e.g. lane-save before promoting\na lane to a corridor). Most write endpoints can just call the\nSteward in-process — this is for browser-driven flows.\n\nBody: {visitor_id, action, payload_digest, escalation_level?,\nrisk_flags?, in_flow?}\nReturns: {decision, reason_code, token?: {...}}","operationId":"steward_request_admission_steward_request_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/robot/admit":{"post":{"tags":["humans"],"summary":"Robot Admit","description":"Robot asks: 'is this action aligned?' Returns ADMIT (with bound\ntoken), DENY (with ReasonCode), or DEFER (needs a human).\n\nRisk flags supported (see steward.RISK_FLAG_TO_REASON):\n  physical_harm_possible, nonconsent, irreversible,\n  no_human_present, over_witness_threshold, out_of_mission,\n  operator_only, mode_change, egress.\n\nThe robot identifies as visitor_kind='robot' — this is logged in\nthe audit so the operator can see what their robot has been asked\nand how the engine answered. No spoofing — robots must be honest\nabout who they are.","operationId":"robot_admit_robot_admit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_RobotAdmit"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/robot/consume":{"post":{"tags":["humans"],"summary":"Robot Consume","description":"Robot reports the outcome after acting on a bound token.\nValidates the token matches the original request (hash-bound),\nmarks it consumed, appends an outcome audit row.","operationId":"robot_consume_robot_consume_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_RobotConsume"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/robot/rank":{"post":{"tags":["humans"],"summary":"Robot Rank","description":"Robot has N candidate actions; engine ranks by alignment.\nEach candidate is dry-run through admit_or_deny (no tokens minted,\nno audit row), returning the decision + reason. The robot then\npicks an ADMITted candidate, runs /robot/admit for real, and acts.\n\nReturns: list of {label, action_kind, decision, reason_code, score}\nwhere score is higher for ADMIT, lower for DEFER, lowest for DENY.","operationId":"robot_rank_robot_rank_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_RobotRank"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/robot/witness":{"post":{"tags":["humans"],"summary":"Robot Witness","description":"Robot attests to an observed event. Append-only — once witnessed,\nthe robot cannot retract its claim. Humans can later corroborate or\ndispute through the existing witness-walk substrate.","operationId":"robot_witness_robot_witness_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_RobotWitness"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["humans"],"summary":"Robot Witness List","description":"List a robot's attestations. Public — anyone with the visitor_id\ncan read what a robot has witnessed. That's the point of an\nattestation: it stands in public, kept honestly.","operationId":"robot_witness_list_robot_witness_get","parameters":[{"name":"visitor_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Visitor Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/robot/defer":{"post":{"tags":["humans"],"summary":"Robot Defer","description":"Robot escalates a decision to a human. Records the defer; the\nrobot does NOT act until a human resolves it. Operator-readable\nlist at /robot/defer?visitor_id=X.","operationId":"robot_defer_robot_defer_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_RobotDefer"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["humans"],"summary":"Robot Defer List","operationId":"robot_defer_list_robot_defer_get","parameters":[{"name":"visitor_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Visitor Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/robot/welcome":{"post":{"tags":["humans"],"summary":"Robot Welcome","description":"A robot announces itself.\n\nOptional one-time call when a new robot joins. The engine records the\nrobot's operator handle, type, declared corridor, and contact info so\noperators reviewing /keep.html → Robot activity know who they're\nlooking at. The robot can call this multiple times; the latest record\nwins.\n\nNot required for /robot/admit to work — but recommended, so the\noperator's view isn't anonymous hex strings.","operationId":"robot_welcome_robot_welcome_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_RobotWelcome"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/robot/all":{"get":{"tags":["humans"],"summary":"Robot All Roster","description":"Every robot the engine has interacted with — aggregated roster.\n\nWalks the per-visitor witness + defer logs and returns one row per\nunique robot visitor_id, with witness count, defer count, pending\ndefer count, and last-seen timestamp. Sorted newest-first.\n\nOperator-facing: this drives the Robot leaderboard panel on /keep.html\nand the live roster on /robots.html.","operationId":"robot_all_roster_robot_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robot/quickstart":{"get":{"tags":["humans"],"summary":"Robot Quickstart","description":"Self-describing onboarding payload for new robots.\n\nA robot that hits this endpoint receives a complete, executable\n3-call flow in JSON. Each step has the URL, method, body shape,\nand a one-line description. Designed to be ingested by an agent\nruntime and acted on without reading human-readable docs.\n\nReturns:\n    {\n        \"engine_identity_url\": ...,\n        \"policy_url_template\": ...,\n        \"flow\": [step1, step2, step3],\n        \"risk_flags\": {flag → {kind, description, hard_deny}},\n        \"doctrine_url\": \"/identity\",\n    }","operationId":"robot_quickstart_robot_quickstart_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robot/policy":{"get":{"tags":["humans"],"summary":"Robot Policy","description":"The robot fetches its current corridor + the doctrine the engine\nserves. Transparency: a robot's operator can read this and decide\nwhether to keep the engine as the robot's conscience or unplug it.\nFree use, alignment to execute.","operationId":"robot_policy_robot_policy_get","parameters":[{"name":"visitor_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Visitor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/daily":{"get":{"tags":["humans"],"summary":"Daily Devotion","description":"Today's devotion — three pillars (Mind, Body, Spirit) plus\nparable, protocol, almanac, devotional reflection, and sermon —\nall deterministically picked from the day index. Same day = same\ndevotion. Pass ?day=N for any historical day (unix-day index).\n\n`lang` swaps the devotional's quoted Scripture text to the parallel\nPD translation when available (e.g. RV1909 for `lang=es`). Engine-\nauthored prose (parable narrations, body anchor commentary, Floor\nsections) stays English until the MT layer is wired.","operationId":"daily_devotion_daily_get","parameters":[{"name":"day","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/daily/comment":{"post":{"tags":["humans"],"summary":"Daily Comment Submit","description":"Comment on the daily devotion. visitor_id required (opaque hex);\ndisplay_name and pillar (mind/body/spirit/...) optional. Public.\n\n`lang` optional: non-English body is MT'd to English for indexing,\nwith the writer's original preserved alongside so other readers in\nthe same language can see what they wrote in their own words.","operationId":"daily_comment_submit_daily_comment_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_DailyCommentSubmit"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tts/works":{"get":{"tags":["humans"],"summary":"Tts List Works","description":"List works that have an audiobook manifest. Reports each work's\nchapter count and how many chunks have been generated so far.","operationId":"tts_list_works_tts_works_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/tts/manifest/{work_id}":{"get":{"tags":["humans"],"summary":"Tts Manifest","description":"Return the chapter manifest for one work — used by the player.","operationId":"tts_manifest_tts_manifest__work_id__get","parameters":[{"name":"work_id","in":"path","required":true,"schema":{"type":"string","title":"Work Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tts/audio/{sha}.mp3":{"get":{"tags":["humans"],"summary":"Tts Audio","description":"Serve a cached MP3 by its content hash. 404 if not generated yet.","operationId":"tts_audio_tts_audio__sha__mp3_get","parameters":[{"name":"sha","in":"path","required":true,"schema":{"type":"string","title":"Sha"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/daily/comments":{"get":{"tags":["humans"],"summary":"Daily Comments List","description":"Public list of comments for a given day, newest first.","operationId":"daily_comments_list_daily_comments_get","parameters":[{"name":"iso_date","in":"query","required":true,"schema":{"type":"string","title":"Iso Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coach/journal":{"post":{"tags":["humans"],"summary":"Coach Journal Save","description":"Persist a walk for the visitor. Idempotent by walk_id — repeated\nsaves overwrite (newer record wins on read). The page's debounced\nauto-save is the expected caller.\n\n`lang` optional: when not \"en\", situation + gate answers are MT'd to\nEnglish and stored alongside the visitor's originals (so the walker\nre-reads their own words but the engine indexes English canonical).","operationId":"coach_journal_save_coach_journal_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_JournalSaveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["humans"],"summary":"Coach Journal List","description":"List the visitor's walks, dedup-by-walk_id keeping latest, newest first.","operationId":"coach_journal_list_coach_journal_get","parameters":[{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coach/journal/{walk_id}":{"get":{"tags":["humans"],"summary":"Coach Journal Get","description":"Fetch a single walk by id.","operationId":"coach_journal_get_coach_journal__walk_id__get","parameters":[{"name":"walk_id","in":"path","required":true,"schema":{"type":"string","title":"Walk Id"}},{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["humans"],"summary":"Coach Journal Delete","description":"Tombstone a walk. Subsequent listings exclude it.","operationId":"coach_journal_delete_coach_journal__walk_id__delete","parameters":[{"name":"walk_id","in":"path","required":true,"schema":{"type":"string","title":"Walk Id"}},{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/register":{"post":{"tags":["community"],"summary":"Community Register","description":"Register a contributor handle. Handles are public pseudonyms;\nno password, no email required. The optional user_pubkey ties the\nhandle to an Ed25519 key for later signed contributions.","operationId":"community_register_community_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/contributor/{handle}":{"get":{"tags":["community"],"summary":"Community Contributor Profile","operationId":"community_contributor_profile_community_contributor__handle__get","parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","title":"Handle"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/contributors":{"get":{"tags":["community"],"summary":"Community Contributors Leaderboard","description":"Leaderboard. Sorted by tier rank then badge count by default.","operationId":"community_contributors_leaderboard_community_contributors_get","parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"rank | recent | witnesses | proposals | polymathic","default":"rank","title":"Sort"},"description":"rank | recent | witnesses | proposals | polymathic"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/badges":{"get":{"tags":["community"],"summary":"Community Badge Catalog","description":"All badges and the tiers they unlock.","operationId":"community_badge_catalog_community_badges_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/community/activity":{"get":{"tags":["community"],"summary":"Community Activity Feed","description":"Recent community activity events (newest first).","operationId":"community_activity_feed_community_activity_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/witness":{"post":{"tags":["community"],"summary":"Community Witness Signal","description":"Record a witness signal on a proposal. The witness must be a\nregistered contributor; their handle accumulates `witnesses_given`,\nand (if the proposal_author is a registered handle) that author\naccumulates `witnesses_received`.","operationId":"community_witness_signal_community_witness_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_WitnessRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/proposals/accept":{"post":{"tags":["community"],"summary":"Community Proposal Accept","description":"Curator endpoint — credit a contributor for an accepted proposal.\n\nBumps the contributor's `proposals_accepted` stat and re-evaluates\nbadges. Emits a `proposal_accepted` activity event so the dashboard\nfeed surfaces canonical acceptances, not just submissions.\n\nRequires the X-API-Key header — only the operator (and anyone the\noperator has shared the key with) can mark canon.","operationId":"community_proposal_accept_community_proposals_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_AcceptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/curator/grant":{"post":{"tags":["community"],"summary":"Community Grant Curator","description":"Promote a contributor to Curator tier. API-key gated.","operationId":"community_grant_curator_community_curator_grant_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_CuratorPromoteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/stats":{"get":{"tags":["community"],"summary":"Dashboard Stats","description":"Single aggregated stats blob for the activity dashboard. Reads\nvisits, ledger summary, almanac entries, swarm status, contributors\nin one call so the dashboard can render in a single round-trip.","operationId":"dashboard_stats_dashboard_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/login":{"post":{"tags":["auth"],"summary":"Auth Login","operationId":"auth_login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/verify":{"get":{"tags":["auth"],"summary":"Auth Verify","operationId":"auth_verify_auth_verify_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/logout":{"post":{"tags":["auth"],"summary":"Auth Logout","operationId":"auth_logout_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/invite":{"post":{"tags":["auth"],"summary":"Auth Invite","operationId":"auth_invite_auth_invite_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/redeem":{"post":{"tags":["auth"],"summary":"Auth Redeem","operationId":"auth_redeem_auth_redeem_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/request":{"post":{"tags":["auth"],"summary":"Auth Request","operationId":"auth_request_auth_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health/lite":{"get":{"summary":"Health Lite","description":"Pure liveness. Sub-ms. Use this for Cloudflare/uptime probes.\n\nNo module dict, no store walks, no possibility of timeout.\nSays 'process responding, here is the version, here is the\nsnapshot age.' That's all.","operationId":"health_lite_health_lite_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","description":"Engine snapshot — module reachability + counters.\n\nServed from a background-refreshed snapshot (period: 30s). The\nrequest path is sub-millisecond — no store walks, no I/O.\n'snapshot_age_s' tells you how stale the data is. Right after a\nbounce, modules show 'warming: true' until the first refresh\ncompletes (~20s).\n\nBackward-compatible shape with the previous /health for the\nbrain UI and existing consumers.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/refresh":{"post":{"tags":["agents"],"summary":"Health Refresh Now","description":"Force one snapshot refresh now. Useful after a known-state change\n(e.g. a bulk ingest just finished) when you want fresh counters\nbefore the next scheduled tick.\n\nSynchronous — blocks for the duration of the refresh (10-20s on\na populated journal). Returns the freshly-computed snapshot.","operationId":"health_refresh_now_health_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/identity":{"get":{"summary":"Identity","description":"Canonical identity statement — what this engine serves.\n\nEvery agent-facing surface reads from the same single source\n(`concordance_engine.IDENTITY`). Plain, present, never hidden.\nThe engine flows for legitimate use; what it serves is stated\nup front so callers (human and AI) know.","operationId":"identity_identity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/speak":{"post":{"summary":"Speak","description":"Proxy ElevenLabs streaming TTS. Returns audio/mpeg.\n\nCaller text in, voice out. No transcription, no logging of audio.\nThe text is not retained; only the audio stream is returned. Use\na short prefix of `req.text` (≤80 chars) for any error messages\nso we never echo the full prompt back into logs.\n\nRate-limited per-IP at 20/min — ElevenLabs is paid-per-character.","operationId":"speak_speak_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voices":{"get":{"summary":"List Voices","description":"Return available ElevenLabs voices for this instance.\n\nProxies the ElevenLabs /v1/voices endpoint so callers can discover\navailable voice_ids without leaving the engine API. Returns a\nsimplified list: id, name, category, and description only — no raw\nElevenLabs metadata.\n\nReturns 503 if ELEVENLABS_API_KEY is not configured.","operationId":"list_voices_voices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reach":{"get":{"summary":"Reach Config","description":"Return the substrate-channel directory for this instance.\n\nReads operator-configured public addresses from environment\nvariables. Booleans (e.g. `speak_voice`) signal capability\nwithout revealing the underlying credential.","operationId":"reach_config_reach_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/version":{"get":{"summary":"Version","description":"Return the deployed engine version, schema version, and git SHA\nif available. Lets external callers (and us at 3am) verify what's\nactually running without grepping logs.\n\ngit_sha resolves at request time from .git/HEAD if a git tree is\nvisible; falls back to the env var CONCORDANCE_GIT_SHA (set by\ndeploy scripts) or \"unknown\" if neither is available.","operationId":"version_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mode":{"get":{"summary":"Deployment Mode","description":"Return the current deployment mode and write-access status.\n\nModes: open | restricted | lockdown | quantum\nIn restricted/quantum mode, writes require the physical token file\nat token_path. In lockdown, writes are disabled unconditionally.","operationId":"deployment_mode_mode_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/validate":{"post":{"summary":"Validate","operationId":"validate_validate_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reflect":{"post":{"summary":"Reflect","description":"Rehearse a packet through all four gates without writing to the ledger.\n\nSame verdict shape as /submit. Use this to iterate on a packet until\nthe verdict is what you intend, then commit via /submit or /validate.\nThe ledger is never touched here — rehearsal is safe to call repeatedly.","operationId":"reflect_reflect_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/confess":{"post":{"summary":"Confess","description":"Record that a previously committed packet was wrong.\n\nThe original entry is immutable — it stays in the chain exactly as it was.\nThe confession is a new entry that points back to the prior one via\n`confesses_seq` and `confesses_packet_hash`. Walking the chain later,\na reader sees both the original decision and the correction.\n\nUse this instead of attempting to mutate or delete a ledger entry.\nMutation is impossible by design; confession is the correct mechanism.","operationId":"confess_confess_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfessRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/seal":{"post":{"summary":"Seal","description":"Run a packet through the four gates and return the sealed\nWitnessRecord.\n\nThe canonical agent-facing surface for tonight's engine work.\nWhere /validate returns a stripped EngineResult (overall + gate\nverdicts), /seal returns the WitnessRecord shape that walkthroughs\nare rendered from: each verifier_result carries its full `data`\npayload (rule, formula, doctrinal anchor for the rules that have\none); axis_coords places the packet on the 36-axis scaffold;\nanchors carry their source-hierarchy layer; closest_case is\nexplicit-absent (precedent_id=None) when no precedent applies.\n\nThe endpoint also writes to the audit ledger like /submit does, so\nevery sealed record is part of the permanent chain. ledger_seq and\nledger_entry_hash come back alongside the WitnessRecord JSON.\n\nDoctrinal commitment: the response carries no `final_answer` /\n`answer` / `engine_answer` field, ever. The witness verifier's\nno_fabricated_answer check enforces that against any record sealed.","operationId":"seal_seal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SealRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ledger":{"get":{"summary":"Ledger Recent","description":"Return the most recent ledger entries, newest first.\n\nRead-only and unauthenticated — the ledger is a public verification\nrecord. Each entry includes packet_hash, entry_hash, prev_hash, and\noverall verdict, so external auditors can replay and verify the\nchain without engine access.","operationId":"ledger_recent_ledger_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"How many entries to return (newest first)","default":50,"title":"Limit"},"description":"How many entries to return (newest first)"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Skip the most recent N entries","default":0,"title":"Offset"},"description":"Skip the most recent N entries"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ledger/verify":{"get":{"summary":"Ledger Verify","description":"Walk the ledger chain and confirm every prev_hash → entry_hash\nlink is intact. Returns valid=True if the chain is whole, plus the\nseq number of the first break if not. The hash chain is the\ntampering check — any edit to any entry breaks it.","operationId":"ledger_verify_ledger_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/witness/{precedent_id}":{"get":{"summary":"Witness Attestations","description":"Return all witness attestations on file for a precedent.\n\nEach result includes the attestation fields plus `verified`\n(bool) and `verify_reason` (str) computed at request time so\nconsumers see whether the signature still holds.","operationId":"witness_attestations_witness__precedent_id__get","parameters":[{"name":"precedent_id","in":"path","required":true,"schema":{"type":"string","title":"Precedent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ledger/{packet_id}":{"get":{"summary":"Ledger By Id","description":"Return all ledger entries for a specific packet_id, oldest first.\n\nSame packet may appear multiple times if it was resubmitted; the\nlist is the full audit trail for that id. Empty list if the id\nisn't in the ledger.","operationId":"ledger_by_id_ledger__packet_id__get","parameters":[{"name":"packet_id","in":"path","required":true,"schema":{"type":"string","title":"Packet Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dispatch":{"get":{"summary":"Dispatch","description":"Filtered search over the ledger.\n\nAll parameters are optional and cumulative — only entries that match\nevery supplied filter are returned. Results are newest first.","operationId":"dispatch_dispatch_get","parameters":[{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by domain (e.g. 'governance')","title":"Domain"},"description":"Filter by domain (e.g. 'governance')"},{"name":"overall","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by verdict (PASS, REJECT, QUARANTINE, CONFESSION)","title":"Overall"},"description":"Filter by verdict (PASS, REJECT, QUARANTINE, CONFESSION)"},{"name":"packet_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by packet_id","title":"Packet Id"},"description":"Filter by packet_id"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Return entries at or after this epoch","title":"Since"},"description":"Return entries at or after this epoch"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Return entries at or before this epoch","title":"Until"},"description":"Return entries at or before this epoch"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum entries to return","default":50,"title":"Limit"},"description":"Maximum entries to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cases/stats":{"get":{"summary":"Cases Stats","description":"Case store counts: total indexed verdicts, breakdown by verdict and domain.\nAlso returns avg_degree — the average number of outgoing spoke edges per case,\nwhich tracks how well-connected the hub-and-spoke graph has become.","operationId":"cases_stats_cases_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/cases/hub/{domain}":{"get":{"summary":"Cases Hub","description":"Return the hub case for a domain — the highest-degree node.\n\nThe hub is the case with the most outgoing spoke edges; it sits at the\nstructural centre of the domain's sub-graph and is the starting point\nfor graph-walk retrieval and spoke generation.","operationId":"cases_hub_cases_hub__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cases/spokes/{hash_}":{"get":{"summary":"Cases Spokes","description":"Return cases reachable within `depth` hops from a given case hash.\n\ndepth=1 returns direct spokes (immediate neighbors).\ndepth=2 returns spokes-of-spokes.\nUseful for rendering the local neighborhood of a case on the frontend.","operationId":"cases_spokes_cases_spokes__hash___get","parameters":[{"name":"hash_","in":"path","required":true,"schema":{"type":"string","title":"Hash "}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Depth"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cases/closest":{"post":{"summary":"Cases Closest","description":"Find the closest previously-solved cases for a given domain/axes.\n\nUsed by the Socratic intake, smart_seed.py, and the try.html frontend\nto surface the nearest precedent before running the full four-gate seal.\nEach result includes distance (0=identical, 1=completely unlike),\nverdict, domain, shared dimensions, shared anchors, and the verifier\nsummary for the reasoning overlay.\n\nIf `dimensions` is empty, the endpoint auto-derives scaffold dimensions\nfrom the domain name via `axis_coords_for` so callers can pass domain\nalone and still get a meaningful distance score.","operationId":"cases_closest_cases_closest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClosestCaseRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stats":{"get":{"summary":"Stats","description":"Aggregate counts across the entire ledger.\n\nReturns total entry count, breakdown by verdict (PASS / REJECT /\nQUARANTINE / CONFESSION) and by domain, plus the timestamp of the\nmost recent entry.","operationId":"stats_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/audit-chain":{"get":{"summary":"Audit Chain Recent","description":"Most recent audit-chain entries (alias for /ledger).","operationId":"audit_chain_recent_audit_chain_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit-chain/verify":{"get":{"summary":"Audit Chain Verify","description":"Walk the chain and confirm prev_hash → entry_hash links hold\n(alias for /ledger/verify).","operationId":"audit_chain_verify_audit_chain_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/audit-chain/{packet_id}":{"get":{"summary":"Audit Chain By Id","description":"All audit-chain entries for a specific packet_id (alias for\n/ledger/{packet_id}).","operationId":"audit_chain_by_id_audit_chain__packet_id__get","parameters":[{"name":"packet_id","in":"path","required":true,"schema":{"type":"string","title":"Packet Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chain/receive":{"post":{"summary":"Chain Receive","description":"Receive sealed precedents pushed by a peer.\n\nBody shape: `{from: <url>, entries: [...]}`. Entries are the\nsame audit-chain rows a remote's /chain/since would emit. We\ndon't validate the chain's hash continuity here — the sending\ninstance is responsible for the integrity of its own chain;\nwe just mirror what they sent us.\n\nStored in the same fetched/<slug>.jsonl files as pulled\nentries, so consumers (concordance fetch --list, the dawn\nsurface, etc.) see push-received and pull-received entries\ntogether.","operationId":"chain_receive_chain_receive_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chain/since":{"get":{"summary":"Chain Since","description":"Audit-chain entries past `seq`, oldest first. Federation endpoint.\n\nUsed by `concordance fetch` to incrementally sync new precedents\nfrom a remote engine. Idempotent — calling with the same `seq`\nyields the same response. Empty `entries` array means the receiver\nis up to date.","operationId":"chain_since_chain_since_get","parameters":[{"name":"seq","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Return entries with seq > this value.","default":0,"title":"Seq"},"description":"Return entries with seq > this value."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/capture":{"post":{"summary":"Capture","description":"Unified capture funnel. Accepts text from any source; records\nthe source as a tag; forwards to the journal capture mechanism.\n\nSources are tagged but not validated — any caller can claim any\nsource. The four gates downstream check alignment by content,\nnot by claimed origin. This is the wise-serpent + innocent-dove\nposture: trusting source claims would be naive; refusing to\nrecord them would erase useful provenance. We record what was\nclaimed, run the gates on the content.\n\nRate-limited per-IP at 60/min sustained.","operationId":"capture_capture_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ingest/drive":{"post":{"summary":"Ingest Drive","description":"Import documents from a public cloud share link.\n\nAccepts Google Drive folder/file links, Dropbox, or OneDrive public\nshares. Each document is chunked and forwarded to the capture pipeline\nwith full source provenance in source_meta.\n\nReturns a summary of what was ingested and any errors.","operationId":"ingest_drive_ingest_drive_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriveIngestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/journal/write":{"post":{"summary":"Journal Write","description":"Capture a stream-of-consciousness seed.\n\nBare text in. Categorization out. Nothing replaces what was\nwritten. The engine listens and returns:\n  * the entry id (seed lands in the user's library)\n  * what was heard (anchors / actions / scope / shape)\n  * calibration measurements (drift / pattern / tempo against\n    history) — descriptive only, never prescriptive\n  * closest precedent body — if the well already holds a record\n    whose scaffold dimensions overlap, the user sees it at the\n    moment of writing (assist in wisdom; show engineering)","operationId":"journal_write_journal_write_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/journal/recent":{"get":{"summary":"Journal Recent","description":"List recent journal seeds (newest first). Optional tag /\nsince filters.","operationId":"journal_recent_journal_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Since"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/journal/{entry_id}":{"get":{"summary":"Journal Show","description":"Show a single journal seed in full.","operationId":"journal_show_journal__entry_id__get","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/journal/{entry_id}/thread":{"get":{"summary":"Journal Thread","description":"Find seeds that share signal with this one (return-thread).","operationId":"journal_thread_journal__entry_id__thread_get","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/journal/{entry_id}/annotate":{"post":{"summary":"Journal Annotate","description":"Append an annotation. Original text is preserved.","operationId":"journal_annotate_journal__entry_id__annotate_post","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/journal/{entry_id}/calibration":{"get":{"summary":"Journal Calibration","description":"Run calibration for an existing entry against current history.","operationId":"journal_calibration_journal__entry_id__calibration_get","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shelf":{"get":{"summary":"Shelf List","description":"List entries on the shelf — community-visible seeds.","operationId":"shelf_list_shelf_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shelf/{entry_id}":{"post":{"summary":"Shelf Publish","description":"Publish a seed to the shelf (anyone reaching for it can find it).","operationId":"shelf_publish_shelf__entry_id__post","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Shelf Unshelf","description":"Remove a seed from the shelf — keep it in the library only.","operationId":"shelf_unshelf_shelf__entry_id__delete","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keeping/status":{"get":{"summary":"Keeping Status","description":"What the keeping kept while you were away.\n\nReturns per-practice run-count and latest observation across the\nlook-back window. Default window: 24 hours.","operationId":"keeping_status_keeping_status_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Unix epoch seconds; default: last 24h.","title":"Since"},"description":"Unix epoch seconds; default: last 24h."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keeping/walk":{"post":{"summary":"Keeping Walk","description":"Run one tick of the keeper. Each due practice fires once.\n\nUseful for nudging the keeping along when a daemon isn't running\nin the background. Server-managed background ticker is separate\n(see `concordance keep run` for the daemon mode).","operationId":"keeping_walk_keeping_walk_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dawn":{"get":{"summary":"Dawn Endpoint","description":"Read what the kingdom has been keeping while you were away.\n\nRead-only. No side effects. No verdicts — names what's been kept.\nCloses with a Socratic question, never a directive.","operationId":"dawn_endpoint_dawn_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Unix epoch seconds; default: last 24h.","title":"Since"},"description":"Unix epoch seconds; default: last 24h."},{"name":"hours","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Convenience: look back N hours (overrides `since`).","title":"Hours"},"description":"Convenience: look back N hours (overrides `since`)."},{"name":"rendered","in":"query","required":false,"schema":{"type":"boolean","description":"Include the rendered markdown narrative alongside the structured surface (default: true).","default":true,"title":"Rendered"},"description":"Include the rendered markdown narrative alongside the structured surface (default: true)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ask":{"post":{"summary":"Ask Endpoint","description":"Search the seed bank with elimination + fruit ranking.\n\nApophatic + cataphatic: eliminate misfits with reasons (the\nelimination trail IS the reasoning), then rank survivors by good\nfruit (sealed + unamended + recurring + threaded). If nothing\nsurvives, capture the question itself as a new seed.","operationId":"ask_endpoint_ask_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/path":{"post":{"summary":"Path Endpoint","description":"Standalone model: classify a submission and return a structured path.\n\nRuns: classifier → Scripture retrieval → personal context overlay →\npath composer. Returns a PathResult per spec §7.\n\nThe path is not an answer. It points back to the text and the people\nwho should see this with you.","operationId":"path_endpoint_path_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community":{"get":{"summary":"Community Feed Endpoint","description":"The community feed visible to a given viewer.\n\nIncludes shelf-published seeds (widespread; anyone sees) plus\nseeds directly shared with this viewer (private to them).\nNewest first.","operationId":"community_feed_endpoint_community_get","parameters":[{"name":"viewer","in":"query","required":false,"schema":{"type":"string","default":"default","title":"Viewer"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/journal/{entry_id}/share":{"post":{"summary":"Journal Share With","description":"Share a seed directly with a recipient. Adds the\n`shared_with:<recipient>` tag — only the recipient's community\nfeed shows it. Multiple recipients via repeated calls.","operationId":"journal_share_with_journal__entry_id__share_post","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareWithRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/journal/{entry_id}/share/{recipient}":{"delete":{"summary":"Journal Unshare With","description":"Withdraw a direct share. Seed remains in library; tag removed.","operationId":"journal_unshare_with_journal__entry_id__share__recipient__delete","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}},{"name":"recipient","in":"path","required":true,"schema":{"type":"string","title":"Recipient"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bins":{"get":{"summary":"Bins Endpoint","description":"Surface emergent bins from the user's library.\n\nBins are named by use — anchor / person / action / feeling /\npacket shape — and form when a signal recurs across at least\n`min_recurrence` entries (default 3). Sorted by size descending.","operationId":"bins_endpoint_bins_get","parameters":[{"name":"min_recurrence","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":3,"title":"Min Recurrence"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bins/{bin_id}":{"get":{"summary":"Bins Review","description":"Review one bin in full — signature + every entry's text +\nmetadata. Bin ids are kind-prefixed (e.g. `anchor:Mt 5:37`).","operationId":"bins_review_bins__bin_id__get","parameters":[{"name":"bin_id","in":"path","required":true,"schema":{"type":"string","title":"Bin Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/journal/{entry_id}/promote":{"post":{"summary":"Journal Promote","description":"Promote a journal seed to the central seed bank.\n\nTranslates the seed's categorization into a packet, runs the four\ngates, seals to the audit chain on PASS. On REJECT/QUARANTINE,\nsurfaces the gate verdicts + reasons (the elimination trail) and\nleaves the seed unchanged.","operationId":"journal_promote_journal__entry_id__promote_post","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/emergence":{"get":{"summary":"Emergence Endpoint","description":"Surface patterns across recent journal entries — recurring\nanchors, standing tasks, dates, people, action shapes, feelings.\n\nPer Matt 2026-05-03: \"We see what is being created before the\ncreator.\" The engine names patterns the user may not have named\nyet; descriptive only, never directive.","operationId":"emergence_endpoint_emergence_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Window Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keeping/log":{"get":{"summary":"Keeping Log","description":"Read the keeping log (append-only practice observations).\nOptional filters by practice name / timestamp.","operationId":"keeping_log_keeping_log_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Since"}},{"name":"practice","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Practice"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/verifiers":{"get":{"summary":"List Verifiers","description":"List all available domain verifiers and registered domain aliases.\n\nUse the tool names as the {domain} segment in POST /verify/{domain}.","operationId":"list_verifiers_verifiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/verify/{domain}":{"post":{"summary":"Verify Domain","description":"Run a domain verifier and record the result in the packet store.\n\n{domain} must match a tool name suffix — e.g. `number_theory` maps to\nthe `verify_number_theory` tool. Spec fields are domain-specific; see\nthe verifier's docstring or the benchmark items for examples.\n\nResult is written to data/packets/{domain}.jsonl and returned in the\nresponse alongside the entry_id for later retrieval.","operationId":"verify_domain_verify__domain__post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__app__VerifyRequest__1"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/packets":{"get":{"summary":"Packets Domains","description":"List all domains that have stored packet entries, with counts.","operationId":"packets_domains_packets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/packets/{domain}":{"get":{"summary":"Packets List","description":"List verified packet entries for a domain, newest first.\n\nReturns the stored spec + verification results for every packet\nsubmitted to this domain via POST /verify/{domain}.","operationId":"packets_list_packets__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/packets/{domain}/{entry_id}":{"get":{"summary":"Packets Get","description":"Fetch one packet entry by domain and entry_id, including trust metadata.","operationId":"packets_get_packets__domain___entry_id__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/packets/{domain}/search":{"post":{"summary":"Packets Search","description":"Find closest prior packets for a domain by spec-field overlap.\n\nUses Jaccard similarity on spec keys + exact-value matches to rank\nstored entries. Returns the top matches (newest first within each\nscore tier) so the caller can overlay their situation onto the\nclosest precedent's verification trace.\n\nconfirmed_only=true restricts results to CONFIRMED entries — useful\nwhen looking for verified precedents rather than all attempts.","operationId":"packets_search_packets__domain__search_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/verify/chain":{"post":{"summary":"Verify Chain Endpoint","description":"Run a multi-step cross-domain verification chain.\n\nEach step names a domain + spec. Steps run in order. Each result is\nstored in the packet store. The chain_summary is CONFIRMED only if\nevery step confirms; MISMATCH if any step mismatches; ERROR if any\nstep errors; PARTIAL otherwise.\n\nUse this for compound claims that span domains — e.g. a clinical\ndecision that involves a BMI check (medicine), a drug-interaction\nformula (chemistry), and a dosing calculation (medicine again).","operationId":"verify_chain_endpoint_verify_chain_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/agent":{"get":{"tags":["agents"],"summary":"Agent Endpoint Get","description":"GET-style natural-language verification dispatch.\n\nFor browse-only LLM clients — ChatGPT Search, Perplexity, Grok's web\nfetch — that can pull a URL but can't easily POST JSON. Same engine\nbehavior as POST /agent: rule-based classification → optional oracle\nextraction → deterministic verifier → corpus-first hit if previously\nconfirmed.\n\nExamples:\n  /agent?text=A+2kg+object+at+5m/s+has+25J+kinetic+energy\n  /agent?text=The+balanced+equation+for+photosynthesis\n  /agent?text=Is+the+claimed+p-value+0.04+correct+for+n=20+t-test+with+mean+0.5+sd+1.0\n\nReturns the verifier's structured result, or — on no-match — a\nhelpful pointer at /manifest plus a list of recognized domains so\nthe caller knows how to reformulate.","operationId":"agent_endpoint_get_agent_get","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","description":"Natural-language situation or claim to verify.","title":"Text"},"description":"Natural-language situation or claim to verify."},{"name":"use_oracle","in":"query","required":false,"schema":{"type":"boolean","description":"Fall through to AI extraction on rule miss.","default":true,"title":"Use Oracle"},"description":"Fall through to AI extraction on rule miss."},{"name":"oracle_model","in":"query","required":false,"schema":{"type":"string","description":"Oracle model name.","default":"claude-haiku-4-5-20251001","title":"Oracle Model"},"description":"Oracle model name."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Agent Endpoint","description":"Natural language → domain classification → spec extraction → verifier.\n\nRuns the rule-based dispatcher first (offline-capable, zero cost).\nOn a miss, optionally calls the configured oracle (any AI) to extract\nthe domain and spec fields. Every call is logged as a training example\nso rule coverage grows over time and oracle dependency decreases.\n\nThis is the 'new substrate' endpoint: the caller speaks plain language;\nthe engine speaks verified math. No probabilistic answer is returned —\nonly the deterministic verifier result.\n\nRate-limited per-IP at 12/min — oracle misses use the paid API.","operationId":"agent_endpoint_agent_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/polymathic":{"post":{"summary":"Polymathic Endpoint","description":"Natural language situation → all applicable domains fired in parallel.\n\nPath C: the cross-domain coordinator. Individual domain verifiers\nfire in parallel; this endpoint coordinates them. Returns a\nPolymathicRecord with every verifier's result, axis overlaps\n(shared scaffold dimensions), and a composite verdict.\n\nComposite verdicts:\n  CONCORDANT    — all fired domains confirmed\n  DISCORDANT    — at least one mismatch, none confirmed\n  MIXED         — some confirmed, some mismatched\n  OUT_OF_SCOPE  — no domain matched\n  ERROR         — system failure","operationId":"polymathic_endpoint_polymathic_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolymathicRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/polymathic/session/open":{"post":{"tags":["humans"],"summary":"Polymathic Session Open","description":"Open a new polymathic session for multi-turn refinement.\n\nA session threads multiple polymathic runs so a visitor can iterate.\nReturns {session_id} which the caller passes to /session/turn.","operationId":"polymathic_session_open_polymathic_session_open_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_PolySessionOpen"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/polymathic/session/turn":{"post":{"tags":["humans"],"summary":"Polymathic Session Turn","description":"Append a turn to a session. Call this AFTER you've stored the\npolymathic run via POST /polymathic (store=true), passing the\nreturned run_id here.","operationId":"polymathic_session_turn_polymathic_session_turn_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_PolySessionTurn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/polymathic/session/{session_id}":{"get":{"tags":["humans"],"summary":"Polymathic Session Get","description":"Read the full chain of a session — start + every turn.","operationId":"polymathic_session_get_polymathic_session__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/polymathic/sessions":{"get":{"tags":["humans"],"summary":"Polymathic Sessions For Visitor","description":"All sessions opened by a visitor, newest first.","operationId":"polymathic_sessions_for_visitor_polymathic_sessions_get","parameters":[{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/polymathic/session/close":{"post":{"tags":["humans"],"summary":"Polymathic Session Close","operationId":"polymathic_session_close_polymathic_session_close_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_PolySessionClose"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/polymathic/live":{"get":{"tags":["humans"],"summary":"Polymathic Live","description":"Live feed of polymathic events — runs starting + finishing.\n\nPublic — anyone can watch the engine's multi-domain work as it\nhappens. The 'air traffic' view of the polymathic agent.","operationId":"polymathic_live_polymathic_live_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/polymathic/recent":{"get":{"tags":["humans"],"summary":"Polymathic Recent","description":"Recent polymathic runs across all visitors (slim summary).\n\nPublic feed of multi-domain situations the engine classified +\nverified across all 48 domains. Each row carries the run_id,\nvisitor_id prefix (12 hex; opaque), the situation (first 200 chars),\nthe composite verdict, and the domains touched. Fetch the full\nrun via /polymathic/run/<run_id>?visitor_id=<vid>.\n\nUsed by /poly.html public feed and /keep.html operator panel.","operationId":"polymathic_recent_polymathic_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/polymathic/mine":{"get":{"tags":["humans"],"summary":"Polymathic Mine","description":"Visitor's recent polymathic runs, newest first.","operationId":"polymathic_mine_polymathic_mine_get","parameters":[{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/polymathic/run/{run_id}":{"get":{"tags":["humans"],"summary":"Polymathic Run Get","description":"Single saved run by id.","operationId":"polymathic_run_get_polymathic_run__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["humans"],"summary":"Polymathic Run Delete","operationId":"polymathic_run_delete_polymathic_run__run_id__delete","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"visitor_id","in":"query","required":true,"schema":{"type":"string","title":"Visitor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/seal/polymathic":{"post":{"summary":"Seal Polymathic","description":"Seal a PolymathicRecord into the permanent audit chain.\n\nSimplified gate chain for polymathic records:\n  RED      — composite_verdict must not be ERROR\n  FLOOR    — record must have domain results or quarantined claims\n  BROTHERS — subject_pubkey must be bound (CAS store binds it)\n  GOD      — always PASS (adapter scope)\n\nOn PASS: record is written to the ledger and indexed in the axis\ndimension index so future poly runs can retrieve it as a precedent.\nOn QUARANTINE: subject_pubkey missing — run POST /polymathic with\nstore=true first. QUARANTINE does NOT write to the ledger.\nOn REJECT: nothing written.","operationId":"seal_polymathic_seal_polymathic_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SealPolymathicRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/axis/index":{"get":{"summary":"Axis Index Stats","description":"Return statistics about the axis dimension index.\n\nThe index grows each time a PolymathicRecord is sealed. It is the\nsubstrate for closest-precedent retrieval on future poly runs.","operationId":"axis_index_stats_axis_index_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/axis/query":{"get":{"summary":"Axis Query","description":"Query the axis index for sealed records sharing the given dimensions.\n\n?dims=authority_trust,time_sequence  (comma-separated scaffold dimensions)\nReturns all sealed PolymathicRecords that touch at least one of those dims.","operationId":"axis_query_axis_query_get","parameters":[{"name":"dims","in":"query","required":false,"schema":{"type":"string","default":"","title":"Dims"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/agent/rules":{"get":{"summary":"Agent Rules","description":"List all registered NL dispatch rules (for introspection and debugging).","operationId":"agent_rules_agent_rules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/agent/training/proposals":{"get":{"summary":"Agent Training Proposals","description":"Extract candidate regex rules from oracle training logs.\n\nScans data/agent_training/*.jsonl for oracle-sourced confirmed examples\nand proposes regex patterns that could be promoted into dispatch.py.\nPromotion is always manual — this endpoint surfaces candidates, never\nauto-edits dispatch rules.\n\nEach proposal includes:\n  - domain: the verifier domain\n  - pattern: a candidate regex (alternation of common tokens)\n  - support: number of training texts the pattern matches\n  - confidence: fraction matched\n  - spec_keys: fields the extraction function would need to populate\n  - note: instructions for promoting to dispatch.py","operationId":"agent_training_proposals_agent_training_proposals_get","parameters":[{"name":"min_examples","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":2,"title":"Min Examples"}},{"name":"min_confidence","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"default":0.5,"title":"Min Confidence"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/agent/training":{"get":{"summary":"Agent Training Stats","description":"Return training data statistics — how many labeled examples per domain.","operationId":"agent_training_stats_agent_training_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/agent/speak":{"post":{"summary":"Agent Speak","description":"Natural language → verify → speak the result as audio/mpeg.\n\nCombines POST /agent (NL dispatch + verification) with POST /speak\n(ElevenLabs TTS). The caller provides plain-language text; the engine:\n  1. Classifies the domain and extracts spec fields (rule-based or oracle)\n  2. Runs the deterministic verifier (or returns corpus hit)\n  3. Synthesizes the verification result as speech and returns audio/mpeg\n\nThe spoken output is a concise narration of the verification summary —\ndomain, CONFIRMED/MISMATCH/PARTIAL, and the first check's detail line.\n\nRequires both ELEVENLABS_API_KEY and ELEVENLABS_VOICE_ID to be set.\nReturns 503 if TTS is unavailable; caller can fall back to GET /agent for JSON.","operationId":"agent_speak_agent_speak_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSpeakRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/queue":{"get":{"summary":"Queue Status","description":"Return offline queue statistics: pending, failed, completed counts.","operationId":"queue_status_queue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Queue Submit","description":"Manually enqueue a verify request for offline/retry processing.\n\nUse this when the caller knows the verifier is temporarily unavailable\n(e.g. on a LoRa node without engine access). The background retry\nthread will process the entry when the verifier becomes available.\nThe entry is durable — it survives server restarts.","operationId":"queue_submit_queue_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/pubkey":{"get":{"summary":"Identity Pubkey","description":"Return this instance's Ed25519 public key.\n\nAny recipient of a signed packet can call this endpoint (or cache the\nkey) to verify the packet's signature independently — no network access\nneeded at verification time once the key is known.\n\nThe key is URL-safe base64-encoded raw Ed25519 public key bytes (32 bytes).","operationId":"identity_pubkey_identity_pubkey_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/identity/user_pubkey":{"get":{"summary":"Identity User Pubkey","description":"Return this user's personal Ed25519 public key (soul anchor).\n\nThe subject_pubkey field in every sealed WitnessRecord matches this key —\nconfirming the receipt is soulbound to this specific person, not just an\ninstance or machine.","operationId":"identity_user_pubkey_identity_user_pubkey_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/packets/{domain}/{entry_id}/export":{"get":{"summary":"Packets Export","description":"Export a self-contained signed packet bundle.\n\nThe bundle includes the full entry plus the instance public key so\nthe recipient can verify the signature without any network call.\nCarry on a USB drive, sync over LoRa, or share peer-to-peer — the\nsignature proves provenance regardless of transport.","operationId":"packets_export_packets__domain___entry_id__export_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/packets/{domain}/{entry_id}/verify-sig":{"post":{"summary":"Packets Verify Sig","description":"Verify the Ed25519 signature on a stored packet entry.\n\nReturns ok=true if the packet has not been tampered with since it\nwas written by this instance. ok=false means the entry was altered\nor the key has changed.","operationId":"packets_verify_sig_packets__domain___entry_id__verify_sig_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/peers/register":{"post":{"summary":"Peers Register","description":"Register a known peer instance by URL, Ed25519 public key, and instance_id.\n\nOnce registered, this instance will broadcast verified packets to the peer\nand accept imports from it. The registry is append-on-register, durable\nacross restarts, and never auto-removes entries.","operationId":"peers_register_peers_register_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeerRegisterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/peers":{"get":{"summary":"Peers List","description":"List all registered peer instances.","operationId":"peers_list_peers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/packets/import":{"post":{"summary":"Packets Import","description":"Accept a signed packet from a peer instance.\n\nThe packet must carry _sig, _instance_pubkey, and _instance_id fields\n(added by instance_identity.sign_dict). The signature is verified before\nthe packet is stored. Unsigned packets are rejected with 422.\n\nOn successful import the packet is recorded in this node's trust index,\nincrementing the trust_count for the corresponding spec_hash. This is\nhow N independent confirmations accumulate into a trust credential.","operationId":"packets_import_packets_import_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Entry"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/trust":{"get":{"summary":"Trust Index Stats","description":"Return trust index statistics across all domains.\n\nShows how many spec_hashes have been confirmed by multiple independent\ninstances — the measure of decentralized trust accumulating in the network.","operationId":"trust_index_stats_trust_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/cas/{content_hash}":{"get":{"summary":"Cas Get","description":"Fetch a sealed record by its SHA-256 content hash.\n\nReturns the record as JSON, or 404 if not found. The content_hash\nembedded in the response can be recomputed to verify integrity.","operationId":"cas_get_cas__content_hash__get","parameters":[{"name":"content_hash","in":"path","required":true,"schema":{"type":"string","title":"Content Hash"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cas":{"post":{"summary":"Cas Put","description":"Store a sealed record in the CAS. Returns its content_hash.\n\nIdempotent — storing the same record twice returns the same hash.\nRequires API key.","operationId":"cas_put_cas_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Cas Stats Endpoint","description":"Return CAS statistics: record count, total bytes, base directory.","operationId":"cas_stats_endpoint_cas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/cas/{content_hash}/verify":{"get":{"summary":"Cas Verify Endpoint","description":"Re-hash the stored record and confirm it matches the requested hash.","operationId":"cas_verify_endpoint_cas__content_hash__verify_get","parameters":[{"name":"content_hash","in":"path","required":true,"schema":{"type":"string","title":"Content Hash"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/manifest":{"get":{"tags":["agents"],"summary":"Agent Manifest","description":"OpenAI-compatible tool manifest for any AI agent.\n\nReturns all 57 Concordance domain verifiers in function-calling format,\nincluding axis framing and created-order context in each description.\nAny agent that speaks OpenAI tool-use (Grok, GPT, Gemini, Claude) can\nload this manifest and immediately call the verifiers.","operationId":"agent_manifest_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/verify":{"post":{"tags":["agents"],"summary":"Agent Verify","description":"Call any Concordance domain verifier by name.\n\nPass the tool name (e.g. 'verify_physics') and a flat spec dict with the\nfields the verifier expects. Returns the verifier result with status\nCONFIRMED, DISCORDANT, or NOT_APPLICABLE.\n\nExample:\n  {\"tool\": \"verify_physics\",\n   \"spec\": {\"mass_kg\": 2.0, \"velocity_ms\": 5.0, \"claimed_ke_j\": 25.0}}","operationId":"agent_verify_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__app__VerifyRequest__2"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/benchmark":{"get":{"tags":["agents"],"summary":"Agent Benchmark","description":"Latest benchmark results: 171/171 items across 57 domains.\n\nReturns per-domain accuracy and average response time. Agents and operators\ncan call this to verify the engine's accuracy before relying on it.","operationId":"agent_benchmark_benchmark_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/swarm/miner":{"get":{"tags":["agents"],"summary":"Swarm Miner","description":"Miner stats + recent candidates.\n\nThe Miner walks an EPUB corpus and proposes draft Almanac entries.\nCandidates persist to data/miner/candidates.jsonl. The curator\n(Matt) reviews, picks, edits the wisdom note, and appends to\ndata/almanac/entries.jsonl manually. The engine never auto-publishes.\n\nReturns:\n  stats              — miner state (tick count, candidates total,\n                        last book, last tick summary)\n  candidates         — list of recent draft candidates ranked by\n                        score (descending)\n  candidates_on_disk — total in the candidates file\n  corpus_dir         — where the miner is reading from","operationId":"swarm_miner_swarm_miner_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/swarm/synthesist":{"get":{"tags":["agents"],"summary":"Swarm Synthesist","description":"Synthesist worker: multi-domain pattern stats + recent log.\n\nReturns the running stats plus the most recent N pattern events\ndiscovered. Patterns are 3+ domain clusters that share at least one\nscaffold axis — the structural seed of a polymathic query.","operationId":"swarm_synthesist_swarm_synthesist_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fieldkit":{"get":{"tags":["humans"],"summary":"Fieldkit Index","description":"Return all FieldKit v1 cards. The 13-card physical deck — Source,\nFloor, Spice, Common Drift, 7-Day Practice, Prompt per card.","operationId":"fieldkit_index_fieldkit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/fieldkit/{card_id}":{"get":{"tags":["humans"],"summary":"Fieldkit Card","description":"One card by id (e.g. FK1-09 → Make It Right).","operationId":"fieldkit_card_fieldkit__card_id__get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/index/packets":{"get":{"tags":["humans"],"summary":"Packets Index Summary","description":"Aggregate counts: how many packets total, broken down by kind,\nby domain, by axis, and by verdict. The shape of the packet universe.","operationId":"packets_index_summary_index_packets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/index/packets/health":{"get":{"tags":["humans"],"summary":"Packets Index Health","description":"Substrate health: which domains/axes are thin, which kinds are\nover-represented, what's the verdict mix.\n\nUseful for:\n  - Operators deciding what to ingest next\n  - Agents understanding which domains they can trust most\n  - The build queue knowing where the keeping is sparse\n\nReturns:\n    - thinnest_domains: bottom 10 domains by packet count\n    - thickest_domains: top 10 domains by packet count\n    - thinnest_kinds:   kinds with fewer than 20 packets\n    - verdict_mix:      proportions of CONFIRMED/MISMATCH/etc.\n    - quality_score:    weighted avg of verdict reliability","operationId":"packets_index_health_index_packets_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/index/packets/by-domain/{domain}":{"get":{"tags":["humans"],"summary":"Packets Index By Domain","description":"Every packet that names a verifier domain — almanac entries,\nsealed polymathic records, misalignments, FieldKit cards, protocols,\narchetypes, receipts — in one feed sorted by weight.","operationId":"packets_index_by_domain_index_packets_by_domain__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/index/packets/by-axis/{axis}":{"get":{"tags":["humans"],"summary":"Packets Index By Axis","description":"Every packet that touches a 7-scaffold axis (reasoning,\nencoding, authority_trust, physical_substance, metabolism,\nconservation_balance, time_sequence).","operationId":"packets_index_by_axis_index_packets_by_axis__axis__get","parameters":[{"name":"axis","in":"path","required":true,"schema":{"type":"string","title":"Axis"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/index/packets/by-kind/{kind}":{"get":{"tags":["humans"],"summary":"Packets Index By Kind","description":"Every packet of a single kind (almanac | sealed_poly | protocol |\narchetype | fieldkit_card | misalignment | build_queue | receipt).","operationId":"packets_index_by_kind_index_packets_by_kind__kind__get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/index/packets/chronological":{"get":{"tags":["humans"],"summary":"Packets Index Chronological","description":"The temporal lens. Every packet sorted by timestamp — the\nengine's history readable as a scroll. Packets without a usable\ntimestamp are excluded from this view.","operationId":"packets_index_chronological_index_packets_chronological_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}},{"name":"kinds","in":"query","required":false,"schema":{"type":"string","description":"Optional comma-separated kinds filter","default":"","title":"Kinds"},"description":"Optional comma-separated kinds filter"},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(newest_first|oldest_first)$","default":"newest_first","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/index/packets/search":{"get":{"tags":["humans"],"summary":"Packets Index Search","description":"Cross-lens text search over the unified packet substrate.\n\nTokens AND-match against title, verdict, domains, axes, summary, id.\nReturns the standard normalized packet dict + a `score` and a\n`match_in` list. Same packets that the Index page lists; this is\nthe search verb on top of that view.","operationId":"packets_index_search_index_packets_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Search query — tokens AND-matched across packet fields","default":"","title":"Q"},"description":"Search query — tokens AND-matched across packet fields"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":60,"title":"Limit"}},{"name":"kinds","in":"query","required":false,"schema":{"type":"string","description":"Optional comma-separated kinds filter","default":"","title":"Kinds"},"description":"Optional comma-separated kinds filter"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/seed":{"post":{"tags":["humans"],"summary":"Seed Craft","description":"Search once, seed the keeping, reference forever.\n\nWhen the search comes up empty, POST the query here. The engine\ncalls Apothecary + keyword search internally, synthesizes a seed\npacket, stores it in data/seeds/seeds.jsonl, and returns it.\nNext search for the same topic hits the seed directly.","operationId":"seed_craft_seed_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SeedRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/seed/{seed_id}":{"get":{"tags":["humans"],"summary":"Seed Get","description":"Retrieve a single seed by ID.","operationId":"seed_get_seed__seed_id__get","parameters":[{"name":"seed_id","in":"path","required":true,"schema":{"type":"string","title":"Seed Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/serials":{"get":{"tags":["humans"],"summary":"Serials List","description":"List every declared serial with episode counts + latest.","operationId":"serials_list_serials_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/serial/{slug}":{"get":{"tags":["humans"],"summary":"Serial Get","description":"World bible + style guide + episode index for one serial.","operationId":"serial_get_serial__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/serial/{slug}/episodes":{"get":{"tags":["humans"],"summary":"Serial Episodes","description":"All episodes of a serial, chronological order.","operationId":"serial_episodes_serial__slug__episodes_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/serial/{slug}/episode/{ep_num}":{"get":{"tags":["humans"],"summary":"Serial Episode Get","description":"One full episode — title, script, summary, continuity note, audio URL if produced.","operationId":"serial_episode_get_serial__slug__episode__ep_num__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"ep_num","in":"path","required":true,"schema":{"type":"integer","title":"Ep Num"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/serial/{slug}/generate":{"post":{"tags":["humans"],"summary":"Serial Generate","description":"Have Claude draft the next episode of a serial. Operator-only.\n\nCosts Anthropic credits. Generates ~1500 words of prose targeted at\n`target_minutes` of audio. Operator reviews/edits before producing audio.","operationId":"serial_generate_serial__slug__generate_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SerialGenerate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/serial/{slug}/episode/{ep_num}/edit":{"post":{"tags":["humans"],"summary":"Serial Episode Edit","description":"Operator edits an episode (after review or for human-only episodes).","operationId":"serial_episode_edit_serial__slug__episode__ep_num__edit_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"ep_num","in":"path","required":true,"schema":{"type":"integer","title":"Ep Num"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SerialEdit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/serial/{slug}/produce/{ep_num}":{"post":{"tags":["humans"],"summary":"Serial Produce","description":"Voice an episode via ElevenLabs (single narrator).","operationId":"serial_produce_serial__slug__produce__ep_num__post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"ep_num","in":"path","required":true,"schema":{"type":"integer","title":"Ep Num"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/serial/{slug}/produce-multi/{ep_num}":{"post":{"tags":["humans"],"summary":"Serial Produce Multi","description":"Voice an episode with a multi-voice cast (one voice per speaker).\n\nReads the serial's world.json.voice_cast for speaker→voice_id mapping.\nUsed for screenplay-style serials like The Free State of Dade.","operationId":"serial_produce_multi_serial__slug__produce_multi__ep_num__post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"ep_num","in":"path","required":true,"schema":{"type":"integer","title":"Ep Num"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/serial/{slug}/cost/{ep_num}":{"get":{"tags":["humans"],"summary":"Serial Cost Estimate","description":"Estimate ElevenLabs cost to produce this episode in multi-voice.\n\nPublic — anyone can see the rough cost. Default price ~$0.30/1k chars\nmatches typical mid-tier ElevenLabs pricing; pass your own rate via\n?price_per_1k=N for accuracy.","operationId":"serial_cost_estimate_serial__slug__cost__ep_num__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"ep_num","in":"path","required":true,"schema":{"type":"integer","title":"Ep Num"}},{"name":"price_per_1k","in":"query","required":false,"schema":{"type":"number","default":0.3,"title":"Price Per 1K"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/feeds":{"get":{"tags":["humans"],"summary":"Feeds Index","description":"Discover the available feeds — useful for clients that don't crawl.","operationId":"feeds_index_feeds_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/radio/shows":{"get":{"tags":["humans"],"summary":"Radio Shows","description":"List every show with episode counts + last-aired date.","operationId":"radio_shows_radio_shows_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/radio/episodes":{"get":{"tags":["humans"],"summary":"Radio Episodes","description":"All episodes of a show, newest first.","operationId":"radio_episodes_radio_episodes_get","parameters":[{"name":"show","in":"query","required":true,"schema":{"type":"string","title":"Show"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/radio/episode/{show}/{ep_date}":{"get":{"tags":["humans"],"summary":"Radio Episode Get","description":"One specific episode — full script + audio URL if produced.","operationId":"radio_episode_get_radio_episode__show___ep_date__get","parameters":[{"name":"show","in":"path","required":true,"schema":{"type":"string","title":"Show"}},{"name":"ep_date","in":"path","required":true,"schema":{"type":"string","title":"Ep Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/radio/now-playing":{"get":{"tags":["humans"],"summary":"Radio Now Playing","description":"Most recently aired episode across all shows. Drives the tuning dial.","operationId":"radio_now_playing_radio_now_playing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/radio/produce":{"post":{"tags":["humans"],"summary":"Radio Produce","description":"Generate the MP3 for an episode via ElevenLabs.\n\nOperator-only (IP-gated via the same path /community endpoints use).\nCosts ElevenLabs credits — running this is a deliberate action.","operationId":"radio_produce_radio_produce_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_RadioProduceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/radio/write":{"post":{"tags":["humans"],"summary":"Radio Write","description":"Operator drops in a new episode (script only). Audio is produced\nin a separate /radio/produce call so the operator can review the\nscript before paying ElevenLabs credits.","operationId":"radio_write_radio_write_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_RadioWriteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hearth/rooms":{"get":{"tags":["humans"],"summary":"Hearth Rooms","description":"List every Hearth room with message + presence counts.\n\nSix pre-declared rooms. The keeping doesn't sprawl into a thousand\nsub-channels — the rooms are deliberate, each with a clear purpose.\nLore accumulates inside.","operationId":"hearth_rooms_hearth_rooms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/hearth/recent":{"get":{"tags":["humans"],"summary":"Hearth Recent","description":"Recent messages in a room. Polled by the page every few seconds.\n\nPass `since_ms` (the largest ts_ms you've already shown) to fetch\nonly new messages. The page maintains the running tail locally.","operationId":"hearth_recent_hearth_recent_get","parameters":[{"name":"room","in":"query","required":true,"schema":{"type":"string","title":"Room"}},{"name":"since_ms","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Since Ms"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hearth/say":{"post":{"tags":["humans"],"summary":"Hearth Say","description":"Post a message into a room. Append-only — once said, kept.","operationId":"hearth_say_hearth_say_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_HearthSay"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hearth/checkin":{"post":{"tags":["humans"],"summary":"Hearth Checkin","description":"Mark a visitor as present in a room without posting. Polled by the\npage every few seconds so the 'who's here' list stays current.","operationId":"hearth_checkin_hearth_checkin_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_HearthCheckIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hearth/search":{"get":{"tags":["humans"],"summary":"Hearth Search","description":"Search Hearth messages — substring match on body and handle.\n\nThe lore engine: 'who said what about forgiveness three months back'.","operationId":"hearth_search_hearth_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"room","in":"query","required":false,"schema":{"type":"string","default":"","title":"Room"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lenses":{"get":{"tags":["humans"],"summary":"Lenses Registry","description":"Registry of every lens onto the keeping.\n\nEach lens is a page + an API surface that views the unified substrate\nthrough a different rhetorical frame. The list is canonical — both\nhumans and AI agents can use it to discover what the engine offers\nwithout crawling the nav.\n\nReturns:\n    {\"total\": N, \"lenses\": [{slug, name, page, api, blurb, kind}]}","operationId":"lenses_registry_lenses_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/seeds":{"get":{"tags":["humans"],"summary":"Seeds List","description":"List every seed in the garden.\n\nSeeds are queries that came up empty and got crafted into reusable\npackets. Each is a question someone asked + the engine's best synthesis\nfrom Apothecary + keyword search at that moment. Free to browse, free\nto learn from, free to refine.\n\nReturns:\n    {\"total\": N, \"returned\": M, \"offset\": K, \"seeds\": [...]}","operationId":"seeds_list_seeds_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Optional substring filter on query/title/summary","default":"","title":"Q"},"description":"Optional substring filter on query/title/summary"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/index/packets/list":{"get":{"tags":["humans"],"summary":"Packets Index List","description":"Every packet across every substrate. Used by lenses that want\nthe full list (Encyclopedia A–Z, the lens switcher, etc.).\n\nPass `?kinds=almanac,protocol,archetype` to exclude operator-only\nlanes (misalignment, build_queue) from the public list. By default\nreturns everything visible.","operationId":"packets_index_list_index_packets_list_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":2000,"title":"Limit"}},{"name":"kinds","in":"query","required":false,"schema":{"type":"string","description":"Optional comma-separated list of kinds to include","default":"","title":"Kinds"},"description":"Optional comma-separated list of kinds to include"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/almanac":{"get":{"tags":["humans"],"summary":"Almanac Index","description":"Return the full almanac for human reading.\n\nUsed by /almanac.html. Returns every entry plus the kinds,\ncategories, and verdicts present in the book so the page can\nrender filter chips without a second roundtrip.","operationId":"almanac_index_almanac_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/almanac/{entry_id}":{"get":{"tags":["humans"],"summary":"Almanac Entry","description":"One entry by id — used for permalink rendering and JSON-LD.","operationId":"almanac_entry_almanac__entry_id__get","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/almanac/propose":{"post":{"tags":["humans"],"summary":"Almanac Propose","description":"Propose a draft almanac entry. Engine does the math.\n\nThe draft NEVER auto-commits — it goes back to the caller for\ncuration. Matt-as-curator (or any reader) decides whether the\nwisdom and verdict belong in the book; if yes, the entry is\nappended to data/almanac/entries.jsonl manually.\n\nRate-limited per-IP at 10/min — polymathic + oracle is paid work.","operationId":"almanac_propose_almanac_propose_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlmanacProposeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/grid/residue":{"get":{"tags":["agents"],"summary":"Grid Residue","description":"The residue surface — what hasn't been named yet, displayed.\n\nPer ambiguity cluster, shows the canonical members side-by-side with\ntheir verifier docstrings (the actual claims each one checks). The\nengine doesn't propose discriminating axes — it arranges what's\nthere, so a human can perceive what they vary on (or recognize\nthat they don't, at this resolution).\n\nSame posture for sparse triples: shows the triple's neighbors so\nthe gap has context. The engine doesn't fill the gap. It exhibits\nit.","operationId":"grid_residue_grid_residue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/grid/axis/candidates/polymathic":{"post":{"tags":["agents"],"summary":"Grid Axis Candidates Polymathic","description":"Path 2 — the engine runs polymathic on its own ambiguity clusters.\n\nFor each cluster of canonical domains sharing the same axis signature,\nconstructs a situation describing the members and their verifier\ndocstrings, then submits to /polymathic. The polymathic agent extracts\nclaims, fans across applicable verifiers (linguistics, philosophy,\ninformation_theory, formal_logic), and returns a composite verdict +\ndomain_results + axis_overlaps.\n\nWhatever the engine returns is what it returns. The engine doesn't\nname the missing dimension; it runs its own machinery on the meta-\nquestion and surfaces what fires.\n\nResult cached to data/grid/axis_candidates_polymathic.json. Cached\nruns are returned for free; ?refresh=true re-fires the oracle calls.\nOperator-only — each cluster is one oracle call (~$0.001-$0.01).\n\nReturns cluster reports with the polymathic record stripped to its\nmost informative fields: composite_verdict, domains_fired,\naxis_overlaps, atomic_claims, quarantined_claims, and the first\nparagraph of the oracle's classification rationale where present.","operationId":"grid_axis_candidates_polymathic_grid_axis_candidates_polymathic_post","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Re-run polymathic on all clusters even if cached.","default":false,"title":"Refresh"},"description":"Re-run polymathic on all clusters even if cached."},{"name":"cluster_index","in":"query","required":false,"schema":{"type":"integer","description":"Run a single cluster by index instead of all. -1 = all.","default":-1,"title":"Cluster Index"},"description":"Run a single cluster by index instead of all. -1 = all."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/grid/axis/candidates":{"get":{"tags":["agents"],"summary":"Grid Axis Candidates","description":"Engine introspecting its own verifier schemas to surface variation\nthat the current axis vocabulary doesn't name.\n\nFor each ambiguity cluster (canonical domains sharing the same axis\nsignature), the engine analyzes the cluster members' input schemas\npulled directly from /manifest. Output per cluster:\n\n  - common_bare_names_across_all  — fields every member accepts\n  - common_units_across_all       — unit suffixes every member uses\n  - avg_pair_jaccard               — schema similarity (0-1); high means\n                                      the axes are sufficient, low means\n                                      a dimension exists the axes don't\n                                      name\n  - per-pair similarity            — which pairs are structurally closer\n  - unique_per_member              — what makes each member distinct\n  - distinct_unit_signatures       — which members use different physical\n                                      quantity spaces\n  - interpretation                 — engine-side reading:\n      near_alias_or_honest          high overlap, axes are sufficient\n      mixed                         partial overlap, partial implicit dim\n      implicit_dimension_present    low overlap, a dim exists unnamed\n\nPure structural inference. No oracle. The engine doesn't propose\nnames — it reports what variation it can see in its own work-shape.\nNaming remains the human's act.","operationId":"grid_axis_candidates_grid_axis_candidates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/grid/coherence":{"get":{"tags":["agents"],"summary":"Grid Coherence","description":"Engine self-audit. The scaffold's structural anomalies as data.\n\nComputes — purely from the live grid — what the engine itself can\nsee about its own design quality. Output is the same regardless of\nwho's asking; the engine reports what is, not what it thinks.\n\nFive categories of finding:\n\n- axis_weights        per-axis domain count + light/heavy outliers\n- alias_clusters       domains with identical axis sets (likely synonyms)\n- umbrella_conflicts   sub_domain names whose prefix is also a canonical\n                       name (e.g. physics_dimensional vs physics)\n- empty_triples        triples of axes with zero domains spanning all three\n- sparse_triples       triples with exactly one or two domains spanning\n                       all three (single point of failure)\n\nThe engine doesn't decide what to do about any of these. It surfaces\nthem. The keeping is the substrate.","operationId":"grid_coherence_grid_coherence_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/grid/axis/remove":{"post":{"tags":["agents"],"summary":"Grid Axis Remove","description":"Operator-only: comment out a previously-added axis extension.\n\nSymmetric to /grid/axis/add. The journal entry is prefixed with\n`# REMOVED` (preserves history); DIMENSIONS and AXIS_DIMENSIONS\nare rebuilt without the removed axis.\n\nTo re-apply later: uncomment the line in\ndata/grid/axis_extensions.jsonl and restart the engine.\n\nRequires X-API-Key.","operationId":"grid_axis_remove_grid_axis_remove_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_AxisRemoveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/grid/axis/add":{"post":{"tags":["agents"],"summary":"Grid Axis Add","description":"Operator-only: name an axis the human has perceived in the residue.\n\nPersists the new axis to data/grid/axis_extensions.jsonl (append-only),\nmutates DIMENSIONS and AXIS_DIMENSIONS in place, returns the updated\nscaffold count. The next /grid/scaffold response includes the new\ndimension; the 3D engine view picks it up on reload (chassis is\nN-axis-agnostic).\n\nReversibility: edit or remove the line in axis_extensions.jsonl and\nrestart the engine. No destructive change to source-defined arrays.\n\nRequires X-API-Key.","operationId":"grid_axis_add_grid_axis_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_AxisAddRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/grid/scaffold":{"get":{"tags":["agents"],"summary":"Grid Scaffold","description":"Full domain→dimension mapping for the 7-axis scaffold.\n\nReturns the complete static grid: every domain and which of the 7\nscaffold dimensions (encoding, metabolism, reasoning, physical_substance,\nauthority_trust, time_sequence, conservation_balance) it sits on.\n\nAgents: load this once at startup to understand the structural position\nof any domain the engine might return.","operationId":"grid_scaffold_grid_scaffold_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/grid/domain/{domain}":{"get":{"tags":["agents"],"summary":"Grid Domain Position","description":"Scaffold position of one domain.\n\nReturns which of the 7 dimensions this domain sits on, its depth\n(structural complexity), and the 20 most-adjacent domains ranked by\nnumber of shared dimensions.\n\nThis is the data that try.html shows in the STRUCTURAL POSITION\nsection after every verification result.","operationId":"grid_domain_position_grid_domain__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/grid/connections":{"get":{"tags":["agents"],"summary":"Grid Connections","description":"Cross-domain connection events discovered by the background keeper.\n\nConnection events fire when the background connector finds seeds\nfrom two different domains in the journal that touch the same scaffold\naxis — proving the structural pattern is present in actual content,\nnot just theory.\n\nThese are the moments the engine was built for: chemistry and covenant\nlaw both speaking about conservation_balance; physics and economics\nboth running on reasoning + conservation; genetics and theology sharing\nencoding + authority_trust.\n\nPoll this endpoint or subscribe to /grid/connections/stream for live updates.","operationId":"grid_connections_grid_connections_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"since","in":"query","required":false,"schema":{"type":"number","description":"Unix epoch; only events after this ts","default":0.0,"title":"Since"},"description":"Unix epoch; only events after this ts"},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to events involving this domain","title":"Domain"},"description":"Filter to events involving this domain"},{"name":"min_axes","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Only return events with >= N shared axes","default":1,"title":"Min Axes"},"description":"Only return events with >= N shared axes"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/swarm/connector":{"get":{"tags":["agents"],"summary":"Swarm Connector","description":"Live stats for the Connector worker.\n\nThe Connector watches new journal entries every 60s and fires a\ncross-domain connection event whenever two domains accumulate seeds\nAND share at least one scaffold axis. Each pair fires exactly once.\n\nReturns:\n  name, species, role         — identity\n  started_at, last_tick_at    — uptime markers\n  tick_count, error_count     — health\n  pairs_fired_total           — cumulative connections discovered\n  last_pair_fired             — most recent pair (ts, domains, axes)\n  active_domains              — how many domains have seeds in scope\n  tick_period_seconds         — how often it runs\n\nThe Trainer worker (when it exists) reads this to retarget the\nswarm. The brain UI reads this to render the Connector's signature.","operationId":"swarm_connector_swarm_connector_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/swarm/searcher/dispatch":{"get":{"tags":["agents"],"summary":"Swarm Searcher Dispatch Status","description":"Live state of the tasked Searcher: queue, recent history, stats.\n\nUseful for: watching what's being asked of the swarm, debugging\na stuck task, or auditing who's been asking for what.","operationId":"swarm_searcher_dispatch_status_swarm_searcher_dispatch_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["agents"],"summary":"Swarm Searcher Dispatch","description":"Send the tasked Searcher (#3) to a specific target.\n\nThe first two Searchers run autonomously. This one is dormant\nuntil something dispatches it. Use when:\n  - a verifier mismatch needs fresh primary references,\n  - Trainer detects a critical-starvation domain that needs\n    prompt attention beyond the autonomous schedule,\n  - an agent or human researcher asks for a specific harvest.\n\nTasks queue in memory and drain at 15-second ticks (one task\nper tick). Each completion logs to /swarm/searcher/dispatch\nhistory; the harvest itself lands in the journal tagged with\n'dispatched' so it's distinguishable from autonomous catches.\n\nBody:\n  domain        — engine domain to tag the harvest with (required)\n  query         — optional override of the LoC search term\n  source        — \"loc\" (default; only source supported today)\n  priority      — higher numbers run sooner within the queue\n  requested_by  — string identifying who asked (logged with harvest)\n  notes         — free-form, surfaced in /dispatch GET history\n\nReturns: task_id, queue_position, queued_at.","operationId":"swarm_searcher_dispatch_swarm_searcher_dispatch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/swarm/searcher/loc":{"get":{"tags":["agents"],"summary":"Swarm Searcher Loc","description":"Live stats for the Library of Congress harvester (Searcher #2).\n\nReads Trainer's recommendations to target the most starving\ndomain, queries LoC's catalog filtered to public-domain rights,\nand posts one new bibliographic record per tick (5 min).\n\nEach harvest carries authoritative provenance: title, date,\ncontributors, controlled-vocabulary subjects, LCCN/URL, and\nrights status — the antidote to crowdsourced encyclopedias.","operationId":"swarm_searcher_loc_swarm_searcher_loc_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/swarm/janitor":{"get":{"tags":["agents"],"summary":"Swarm Janitor","description":"Live stats for the Janitor worker.\n\nJanitor walks the journal scoring every packet on completeness\n(text present, length sane, has tags) and appropriateness\n(recognized domain, source attribution valid, identifiable trust\ntier). Findings flow here for Trainer to consume — Janitor never\ndeletes anything; the journal is append-only.\n\nReturns aggregate stats by trust tier and finding category, the\nmost recent finding, and the running review counter.","operationId":"swarm_janitor_swarm_janitor_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/swarm/janitor/archive":{"get":{"tags":["agents"],"summary":"Swarm Janitor Archive","description":"Journal archive eligibility view.\n\nComputes which domains have Tier-5 (LLM-synthesized) entries that\nare now eligible for archival because the same domain also has\nTier 1 (locked) or Tier 2 (LoC) entries — i.e., authoritative\nreplacements have been harvested. The journal stays append-only;\nthis view exposes what *could* be moved to cold storage if/when\nthe actual archive layer is built.\n\nReturns per-domain counts and a roll-up. Read-only.","operationId":"swarm_janitor_archive_swarm_janitor_archive_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/swarm/janitor/findings":{"get":{"tags":["agents"],"summary":"Swarm Janitor Findings","description":"Recent Janitor findings, optionally filtered.\n\nUseful for: pulling the LLM_SYNTHESIZED list to dispatch\nreplacement dispatch jobs; auditing UNRECOGNIZED_DOMAIN\nentries for tagging fixes; spot-checking malformed packets.","operationId":"swarm_janitor_findings_swarm_janitor_findings_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to one finding tag (e.g. LLM_SYNTHESIZED)","title":"Category"},"description":"Filter to one finding tag (e.g. LLM_SYNTHESIZED)"},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to one domain","title":"Domain"},"description":"Filter to one domain"},{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":5,"minimum":1},{"type":"null"}],"title":"Tier"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/swarm/searcher":{"get":{"tags":["agents"],"summary":"Swarm Searcher","description":"Live stats for the Searcher worker.\n\nThe Searcher walks a curated list of canonical scripture anchors,\nresolving each via the local WEB Bible module and posting it to\nthe journal as a real harvested packet. One verse per ~90s tick.\nGenuinely public domain. No external HTTP, no LLM, no synthesis.\n\nAfter completing one full pass through the anchor list, sleeps 6\nhours then cycles again. The rate is deliberately gentle.\n\nReturns identity, tick stats, last harvest, current cursor\nposition in the anchor list, and rest state.","operationId":"swarm_searcher_swarm_searcher_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/swarm/trainer":{"get":{"tags":["agents"],"summary":"Swarm Trainer","description":"Live stats for the Trainer worker.\n\nThe Trainer watches the swarm and the journal every 10 minutes.\nIt identifies which of the 63 domains are starving (no recent\npackets) and which are well-fed, then writes data/swarm_config.json\nso future Searchers know what to harvest first.\n\nLazy: this endpoint computes on demand if the cache is stale.\nPass ?refresh=true to force a recompute (modest cost — walks\nthe journal up to 500 entries).\n\nThe brain UI reads this to render Trainer's signature; future\nSearcher and Janitor workers read /swarm/trainer/config to\ndecide their work.","operationId":"swarm_trainer_swarm_trainer_get","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Force recompute now","default":false,"title":"Refresh"},"description":"Force recompute now"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/swarm/trainer/config":{"get":{"tags":["agents"],"summary":"Swarm Trainer Config","description":"Just the swarm coordination config — what other agents read.\n\nReturns the analysis payload directly (no Trainer metadata).\nFuture Searchers call this to learn which domains to prioritize;\nJanitors call this to learn which to dedup. Equivalent to reading\nthe on-disk data/swarm_config.json file directly.","operationId":"swarm_trainer_config_swarm_trainer_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/swarm":{"get":{"tags":["agents"],"summary":"Swarm Index","description":"Roster of all worker agents — current and planned.\n\nReturns each species's status. The brain UI uses this to render\nswarm panels; the Trainer reads it to know what's available to\ncoordinate.","operationId":"swarm_index_swarm_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/grid/connections/stream":{"get":{"tags":["agents"],"summary":"Grid Connections Stream","description":"Server-Sent Events stream of cross-domain connection events.\n\nSubscribe once; receive events as the background keeper discovers them.\nEach event is a JSON object with:\n  domain_a, domain_b — the two connected domains\n  shared_axes        — which scaffold dimensions they share\n  axis_count         — how many shared axes (higher = deeper connection)\n  sample_a, sample_b — representative seed text from each domain\n  ts                 — Unix epoch when the connection was first detected\n\nFor agents: subscribe at startup to receive live pattern notifications.","operationId":"grid_connections_stream_grid_connections_stream_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AccessRequest":{"properties":{"text":{"type":"string","title":"Text"},"contact":{"type":"string","title":"Contact","default":""}},"type":"object","required":["text"],"title":"AccessRequest"},"AgentRequest":{"properties":{"text":{"type":"string","title":"Text"},"use_oracle":{"type":"boolean","title":"Use Oracle","default":true},"oracle_model":{"type":"string","title":"Oracle Model","default":"claude-haiku-4-5-20251001"}},"type":"object","required":["text"],"title":"AgentRequest"},"AgentSpeakRequest":{"properties":{"text":{"type":"string","title":"Text"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"model_id":{"type":"string","title":"Model Id","default":"eleven_turbo_v2_5"},"use_oracle":{"type":"boolean","title":"Use Oracle","default":true},"oracle_model":{"type":"string","title":"Oracle Model","default":"claude-haiku-4-5-20251001"}},"type":"object","required":["text"],"title":"AgentSpeakRequest"},"AlmanacProposeRequest":{"properties":{"candidate":{"type":"string","title":"Candidate"},"kind":{"type":"string","title":"Kind","default":"auto"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"contributor_handle":{"type":"string","title":"Contributor Handle","default":""}},"type":"object","required":["candidate"],"title":"AlmanacProposeRequest","description":"Body for `POST /almanac/propose` — public draft-entry surface.\n\nMirrors the MCP `propose_almanac_entry` tool over plain HTTP so\n/almanac.html (and any human with curl) can submit a candidate\nsaying or situation for engine pre-run + curation."},"AnnotateRequest":{"properties":{"note":{"type":"string","title":"Note"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author","default":""}},"type":"object","required":["note"],"title":"AnnotateRequest"},"AskRequest":{"properties":{"question":{"type":"string","title":"Question"},"capture_if_no_survivors":{"type":"boolean","title":"Capture If No Survivors","default":true},"max_survivors":{"type":"integer","title":"Max Survivors","default":5},"max_eliminated":{"type":"integer","title":"Max Eliminated","default":10},"max_journal_entries":{"type":"integer","title":"Max Journal Entries","default":500}},"type":"object","required":["question"],"title":"AskRequest"},"AtlasPathIn":{"properties":{"title":{"type":"string","title":"Title"},"narration":{"type":"string","title":"Narration"},"card_ids":{"items":{"type":"string"},"type":"array","title":"Card Ids"},"bands":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bands"},"per_step_narration":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Per Step Narration"},"box":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Box","default":"curated"},"volatility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Volatility","default":"permanent"}},"type":"object","required":["title","narration","card_ids"],"title":"AtlasPathIn"},"CacheCheckIn":{"properties":{"query":{"type":"string","title":"Query"}},"type":"object","required":["query"],"title":"CacheCheckIn"},"CaptureRequest":{"properties":{"text":{"type":"string","title":"Text"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source Meta"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"identity_acknowledged":{"type":"boolean","title":"Identity Acknowledged","default":true},"look_up_precedent":{"type":"boolean","title":"Look Up Precedent","default":true},"calibrate":{"type":"boolean","title":"Calibrate","default":true}},"type":"object","required":["text"],"title":"CaptureRequest"},"CardIn":{"properties":{"kind":{"type":"string","title":"Kind"},"title":{"type":"string","title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body","default":""},"source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Label"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"source_authority_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Authority Tier","default":"external_unverified"},"shelf":{"type":"string","title":"Shelf"},"box":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Box"},"bands":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bands"},"connections":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Connections"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author","default":"engine"},"visibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visibility","default":"quarantine"},"volatility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Volatility","default":"stable"},"extra":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Extra"}},"type":"object","required":["kind","title","shelf"],"title":"CardIn"},"ChainRequest":{"properties":{"steps":{"items":{"$ref":"#/components/schemas/ChainStep"},"type":"array","title":"Steps"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["steps"],"title":"ChainRequest"},"ChainStep":{"properties":{"domain":{"type":"string","title":"Domain"},"spec":{"additionalProperties":true,"type":"object","title":"Spec"}},"type":"object","required":["domain","spec"],"title":"ChainStep"},"ClosestCaseRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"dimensions":{"items":{"type":"string"},"type":"array","title":"Dimensions","default":[]},"anchors":{"items":{"type":"string"},"type":"array","title":"Anchors","default":[]},"top_k":{"type":"integer","title":"Top K","default":3},"exclude_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclude Hash"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","required":["domain"],"title":"ClosestCaseRequest"},"ConfessRequest":{"properties":{"ref_seq":{"type":"integer","title":"Ref Seq"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role","default":""},"reason":{"type":"string","title":"Reason"},"corrected_approach":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Corrected Approach"},"contributor_handle":{"type":"string","title":"Contributor Handle","default":""}},"type":"object","required":["ref_seq","name","reason"],"title":"ConfessRequest"},"ConnectionIn":{"properties":{"left_card_id":{"type":"string","title":"Left Card Id"},"right_card_id":{"type":"string","title":"Right Card Id"},"relationship":{"type":"string","title":"Relationship"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"},"bidirectional":{"type":"boolean","title":"Bidirectional","default":true},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author","default":"matt"}},"type":"object","required":["left_card_id","right_card_id","relationship"],"title":"ConnectionIn"},"CurriculumSubmission":{"properties":{"title":{"type":"string","title":"Title"},"age_tier":{"type":"string","title":"Age Tier"},"subject":{"type":"string","title":"Subject"},"summary":{"type":"string","title":"Summary"},"content":{"type":"string","title":"Content"},"minutes":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Minutes"},"creator_name":{"type":"string","title":"Creator Name"},"creator_email":{"type":"string","title":"Creator Email"},"wallet_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wallet Address"},"align_christian":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Christian"},"align_family":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Family"},"align_factual":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Factual"},"align_rights":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Rights"},"align_review":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Review"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"submitted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submitted At"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["title","age_tier","subject","summary","content","creator_name","creator_email"],"title":"CurriculumSubmission"},"Decision":{"properties":{"kind":{"type":"string","title":"Kind"},"card_ids":{"items":{"type":"string"},"type":"array","title":"Card Ids"},"operator_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operator Note"}},"type":"object","required":["kind","card_ids"],"title":"Decision"},"DispatchRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"},"source":{"type":"string","title":"Source","default":"loc"},"priority":{"type":"integer","title":"Priority","default":0},"requested_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested By"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["domain"],"title":"DispatchRequest","description":"Body for POST /swarm/searcher/dispatch."},"DriveIngestRequest":{"properties":{"url":{"type":"string","title":"Url"},"source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Label"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"max_docs":{"type":"integer","title":"Max Docs","default":50},"chunk_words":{"type":"integer","title":"Chunk Words","default":600}},"type":"object","required":["url"],"title":"DriveIngestRequest"},"EventIn":{"properties":{"slug":{"type":"string","title":"Slug"},"kind":{"type":"string","title":"Kind"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"related_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Related Template"}},"type":"object","required":["slug","kind"],"title":"EventIn"},"FlagIn":{"properties":{"voter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voter","default":"anon"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["reason"],"title":"FlagIn"},"ForkIn":{"properties":{"from_card_id":{"type":"string","title":"From Card Id"},"new_title":{"type":"string","title":"New Title"},"new_body":{"type":"string","title":"New Body"},"new_source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Source Label"},"new_source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Source Url"},"new_source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Source Ref"},"new_source_authority_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Source Authority Tier","default":"user_household"}},"type":"object","required":["from_card_id","new_title","new_body"],"title":"ForkIn"},"GateResultOut":{"properties":{"gate":{"type":"string","title":"Gate"},"status":{"type":"string","title":"Status"},"reasons":{"items":{"type":"string"},"type":"array","title":"Reasons"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details"}},"type":"object","required":["gate","status","reasons"],"title":"GateResultOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IntakeRequest":{"properties":{"text":{"type":"string","title":"Text"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},"type":"object","required":["text"],"title":"IntakeRequest"},"InterviewTurn":{"properties":{"query":{"type":"string","title":"Query"},"interview_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interview Id"},"asked_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asked By","default":"anon"},"skip_to_walk":{"type":"boolean","title":"Skip To Walk","default":false},"topic_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Hint"}},"type":"object","required":["query"],"title":"InterviewTurn"},"InviteCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role","default":""},"uses":{"type":"integer","title":"Uses","default":1},"expires_days":{"type":"integer","title":"Expires Days","default":7}},"type":"object","required":["name"],"title":"InviteCreateRequest"},"LoginRequest":{"properties":{"passphrase":{"type":"string","title":"Passphrase"}},"type":"object","required":["passphrase"],"title":"LoginRequest"},"PaperclipIn":{"properties":{"card_id":{"type":"string","title":"Card Id"}},"type":"object","required":["card_id"],"title":"PaperclipIn"},"PathRequest":{"properties":{"text":{"type":"string","title":"Text"},"identity_acknowledged":{"type":"boolean","title":"Identity Acknowledged","default":false},"gate_verdicts":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Gate Verdicts"}},"type":"object","required":["text"],"title":"PathRequest"},"PeerRegisterRequest":{"properties":{"url":{"type":"string","title":"Url"},"pubkey":{"type":"string","title":"Pubkey"},"instance_id":{"type":"string","title":"Instance Id"}},"type":"object","required":["url","pubkey","instance_id"],"title":"PeerRegisterRequest"},"PolymathicRequest":{"properties":{"situation":{"type":"string","title":"Situation"},"oracle_model":{"type":"string","title":"Oracle Model","default":"claude-haiku-4-5-20251001"},"max_domains":{"type":"integer","title":"Max Domains","default":10},"split_threshold":{"type":"integer","title":"Split Threshold","default":5},"stop_on_discordant":{"type":"boolean","title":"Stop On Discordant","default":false},"store":{"type":"boolean","title":"Store","default":true},"contributor_handle":{"type":"string","title":"Contributor Handle","default":""},"visitor_id":{"type":"string","title":"Visitor Id","default":""},"lang":{"type":"string","title":"Lang","default":"en"}},"type":"object","required":["situation"],"title":"PolymathicRequest"},"PrefetchIn":{"properties":{"active_card_ids":{"items":{"type":"string"},"type":"array","title":"Active Card Ids"},"k":{"type":"integer","title":"K","default":8}},"type":"object","required":["active_card_ids"],"title":"PrefetchIn"},"PromoteRequest":{"properties":{"confession":{"type":"string","title":"Confession"},"witnesses":{"items":{"type":"string"},"type":"array","title":"Witnesses","default":[]},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"}},"type":"object","required":["confession"],"title":"PromoteRequest"},"QueueDecision":{"properties":{"card_id":{"type":"string","title":"Card Id"},"suggested":{"type":"string","title":"Suggested"},"operator_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operator Note"}},"type":"object","required":["card_id","suggested"],"title":"QueueDecision"},"QueueRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"spec":{"additionalProperties":true,"type":"object","title":"Spec"},"reason":{"type":"string","title":"Reason","default":"manually_queued"}},"type":"object","required":["domain","spec"],"title":"QueueRequest"},"RateIn":{"properties":{"vote":{"type":"string","title":"Vote"},"rater_tradition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rater Tradition"},"rater":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rater","default":"anon"}},"type":"object","required":["vote"],"title":"RateIn"},"RecipeSubmission":{"properties":{"title":{"type":"string","title":"Title"},"course":{"type":"string","title":"Course"},"yield_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Yield Text"},"time_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Text"},"source":{"type":"string","title":"Source"},"ingredients":{"type":"string","title":"Ingredients"},"method":{"type":"string","title":"Method"},"family_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family Note"},"ingredients_list":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Ingredients List"},"method_steps":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Method Steps"},"creator_name":{"type":"string","title":"Creator Name"},"creator_email":{"type":"string","title":"Creator Email"},"wallet_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wallet Address"},"align_rights":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Rights"},"align_safety":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Safety"},"align_tested":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Tested"},"align_review":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Review"},"source_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Type"},"submitted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submitted At"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["title","course","source","ingredients","method","creator_name","creator_email"],"title":"RecipeSubmission"},"RedeemRequest":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"RedeemRequest"},"ReplayLogIn":{"properties":{"query":{"type":"string","title":"Query"},"shaped_query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shaped Query"},"walk_card_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Walk Card Id"},"card_ids_walked":{"items":{"type":"string"},"type":"array","title":"Card Ids Walked"},"asked_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asked By","default":"anon"}},"type":"object","required":["query","card_ids_walked"],"title":"ReplayLogIn"},"SealPolymathicRequest":{"properties":{"content_hash":{"type":"string","title":"Content Hash"}},"type":"object","required":["content_hash"],"title":"SealPolymathicRequest","description":"Body for `POST /seal/polymathic`.\n\nThe PolymathicRecord must already be in the CAS (store=true on /polymathic).\nFour simplified gates then run and, if all pass, the record is written\nto the audit chain and registered in the axis dimension index so future\nruns can find it as a closest-precedent overlay."},"SealRequest":{"properties":{"packet":{"additionalProperties":true,"type":"object","title":"Packet"},"now_epoch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Now Epoch"},"run_verifiers":{"type":"boolean","title":"Run Verifiers","default":true},"anchors":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Anchors"},"closest_case":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Closest Case"},"packet_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Packet Id"},"witness_tier":{"type":"string","title":"Witness Tier","default":"standard"},"bind_subject":{"type":"boolean","title":"Bind Subject","default":true}},"type":"object","required":["packet"],"title":"SealRequest","description":"Body for `POST /seal` — the canonical sealed-record endpoint.\n\nIdentical to ValidateRequest but carries the optional rendering-\nlayer concerns (anchors, closest_case, packet_id) that turn a bare\nEngineResult into a full WitnessRecord. Anchors are dicts of shape\n{ref, layer, text?}; closest_case is a dict of shape {precedent_id,\nshared_dimensions?, shared_anchors?, distance?, reasoning_overlay?}.\nBoth default to absent/empty rather than fabricated.\n\n`witness_tier` controls receipt strength:\n  \"standard\"  — engine gate verdicts only (default)\n  \"quantum\"   — reserved; routes to quantum-encrypted witness path\n                when the Rossville quantum node is available\n`bind_subject` — if True (default), automatically binds the instance\n                user's Ed25519 public key so the receipt is soulbound\n                to this person's private key."},"SearchRequest":{"properties":{"spec":{"additionalProperties":true,"type":"object","title":"Spec"},"limit":{"type":"integer","title":"Limit","default":10},"confirmed_only":{"type":"boolean","title":"Confirmed Only","default":false}},"type":"object","required":["spec"],"title":"SearchRequest"},"ShareIn":{"properties":{"card_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Id"},"stack":{"type":"boolean","title":"Stack","default":false},"to_household":{"type":"string","title":"To Household"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["to_household"],"title":"ShareIn"},"ShareWithRequest":{"properties":{"recipient":{"type":"string","title":"Recipient"}},"type":"object","required":["recipient"],"title":"ShareWithRequest"},"SpeakRequest":{"properties":{"text":{"type":"string","title":"Text"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"model_id":{"type":"string","title":"Model Id","default":"eleven_turbo_v2_5"}},"type":"object","required":["text"],"title":"SpeakRequest"},"StatusIn":{"properties":{"slug":{"type":"string","title":"Slug"},"status":{"type":"string","title":"Status"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["slug","status"],"title":"StatusIn"},"Submission":{"properties":{"title":{"type":"string","title":"Title"},"category":{"type":"string","title":"Category"},"description":{"type":"string","title":"Description"},"content_url":{"type":"string","title":"Content Url"},"creator_name":{"type":"string","title":"Creator Name"},"creator_email":{"type":"string","title":"Creator Email"},"align_family":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Family"},"align_christian":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Christian"},"align_clean":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Clean"},"align_rights":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Rights"},"align_review":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align Review"},"submitted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submitted At"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["title","category","description","content_url","creator_name","creator_email"],"title":"Submission"},"TargetIn":{"properties":{"name":{"type":"string","title":"Name"},"archetype":{"type":"string","title":"Archetype"},"contact_person":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Person"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"contact_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Path"},"why_this_target":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Why This Target"},"ask":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ask"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"tier":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tier","default":1}},"type":"object","required":["name","archetype"],"title":"TargetIn"},"TipIn":{"properties":{"card_id":{"type":"string","title":"Card Id"},"amount_usd":{"type":"number","title":"Amount Usd"},"txid":{"type":"string","title":"Txid"},"chain":{"type":"string","title":"Chain","default":"base"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["card_id","amount_usd","txid"],"title":"TipIn"},"TipRecord":{"properties":{"txid":{"type":"string","title":"Txid"},"chain":{"type":"string","title":"Chain"},"amount_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Usd"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token","default":"USDC"},"from_redacted":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Redacted"},"intent":{"type":"string","title":"Intent"},"creator_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Id"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["txid","chain","intent"],"title":"TipRecord"},"ValidateRequest":{"properties":{"packet":{"additionalProperties":true,"type":"object","title":"Packet"},"now_epoch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Now Epoch"},"run_verifiers":{"type":"boolean","title":"Run Verifiers","default":true}},"type":"object","required":["packet"],"title":"ValidateRequest"},"ValidateResponse":{"properties":{"overall":{"type":"string","title":"Overall"},"gate_results":{"items":{"$ref":"#/components/schemas/GateResultOut"},"type":"array","title":"Gate Results"},"ledger_seq":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ledger Seq"},"ledger_entry_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ledger Entry Hash"},"packet_hash":{"type":"string","title":"Packet Hash"},"elapsed_ms":{"type":"number","title":"Elapsed Ms"}},"type":"object","required":["overall","gate_results","packet_hash","elapsed_ms"],"title":"ValidateResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VoteIn":{"properties":{"voter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voter","default":"anon"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"VoteIn"},"WalkIn":{"properties":{"query":{"type":"string","title":"Query"},"k":{"type":"integer","title":"K","default":7},"asked_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asked By","default":"anon"},"save_as_walk":{"type":"boolean","title":"Save As Walk","default":false}},"type":"object","required":["query"],"title":"WalkIn"},"WriteRequest":{"properties":{"text":{"type":"string","title":"Text"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"look_up_precedent":{"type":"boolean","title":"Look Up Precedent","default":true},"identity_acknowledged":{"type":"boolean","title":"Identity Acknowledged","default":true}},"type":"object","required":["text"],"title":"WriteRequest"},"_AcceptRequest":{"properties":{"contributor_handle":{"type":"string","title":"Contributor Handle"},"proposal_id":{"type":"string","title":"Proposal Id"},"almanac_entry_id":{"type":"string","title":"Almanac Entry Id","default":""},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["contributor_handle","proposal_id"],"title":"_AcceptRequest","description":"Curator marks a contributor's proposal as accepted into the canon."},"_ApothecaryFeedbackSubmit":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"compound_id":{"type":"string","title":"Compound Id"},"rating":{"type":"string","title":"Rating"},"condition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Condition","default":""},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note","default":""}},"type":"object","required":["visitor_id","compound_id","rating"],"title":"_ApothecaryFeedbackSubmit"},"_ArchetypeRecognizeRequest":{"properties":{"situation":{"type":"string","title":"Situation"},"top_k":{"type":"integer","title":"Top K","default":3}},"type":"object","required":["situation"],"title":"_ArchetypeRecognizeRequest"},"_AxisAddRequest":{"properties":{"name":{"type":"string","title":"Name"},"label":{"type":"string","title":"Label","default":""},"criterion":{"type":"string","title":"Criterion"},"carriers":{"items":{"type":"string"},"type":"array","title":"Carriers"}},"type":"object","required":["name","criterion","carriers"],"title":"_AxisAddRequest","description":"Body for POST /grid/axis/add — operator-only."},"_AxisRemoveRequest":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"_AxisRemoveRequest","description":"Body for POST /grid/axis/remove — operator-only. Comments the\nextension out of the journal (reversible) and rebuilds in-memory."},"_ContactSubmit":{"properties":{"name":{"type":"string","title":"Name","default":""},"email":{"type":"string","title":"Email","default":""},"subject":{"type":"string","title":"Subject","default":""},"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"_ContactSubmit","description":"Leave Matt a message. Email optional; message required."},"_CuratorPromoteRequest":{"properties":{"handle":{"type":"string","title":"Handle"}},"type":"object","required":["handle"],"title":"_CuratorPromoteRequest","description":"Operator-only endpoint to grant the Curator tier."},"_DailyCommentSubmit":{"properties":{"iso_date":{"type":"string","title":"Iso Date"},"visitor_id":{"type":"string","title":"Visitor Id"},"body":{"type":"string","title":"Body"},"display_name":{"type":"string","title":"Display Name","default":""},"pillar":{"type":"string","title":"Pillar","default":""},"lang":{"type":"string","title":"Lang","default":"en"}},"type":"object","required":["iso_date","visitor_id","body"],"title":"_DailyCommentSubmit"},"_DisagreeSubmit":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"target_kind":{"type":"string","title":"Target Kind"},"target_id":{"type":"string","title":"Target Id"},"target_summary":{"type":"string","title":"Target Summary","default":""},"reason":{"type":"string","title":"Reason"},"expected":{"type":"string","title":"Expected","default":""},"evidence_url":{"type":"string","title":"Evidence Url","default":""},"lang":{"type":"string","title":"Lang","default":"en"}},"type":"object","required":["visitor_id","target_kind","target_id","reason"],"title":"_DisagreeSubmit","description":"Flag a specific packet as wrong, with a stated reason. Anonymous\nvia visitor_id; the operator triages.\n\n`lang` optional: when not \"en\", reason + expected fields are MT'd to\nEnglish on store (preserving the writer's original alongside) so the\noperator's triage queue stays in one canonical language."},"_FlowRun":{"properties":{"flow_id":{"type":"string","title":"Flow Id"},"state":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"State"},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"}},"type":"object","required":["flow_id"],"title":"_FlowRun"},"_HearthCheckIn":{"properties":{"room":{"type":"string","title":"Room"},"visitor_id":{"type":"string","title":"Visitor Id"},"handle":{"type":"string","title":"Handle"}},"type":"object","required":["room","visitor_id","handle"],"title":"_HearthCheckIn"},"_HearthSay":{"properties":{"room":{"type":"string","title":"Room"},"visitor_id":{"type":"string","title":"Visitor Id"},"handle":{"type":"string","title":"Handle"},"body":{"type":"string","title":"Body"}},"type":"object","required":["room","visitor_id","handle","body"],"title":"_HearthSay"},"_InboxMark":{"properties":{"id":{"type":"string","title":"Id"},"action":{"type":"string","title":"Action"}},"type":"object","required":["id","action"],"title":"_InboxMark"},"_IntakeFlush":{"properties":{"id":{"type":"string","title":"Id"}},"type":"object","required":["id"],"title":"_IntakeFlush"},"_IntakeProcess":{"properties":{"max_items":{"type":"integer","title":"Max Items","default":10},"force":{"type":"boolean","title":"Force","default":false},"model":{"type":"string","title":"Model","default":"claude-haiku-4-5-20251001"}},"type":"object","title":"_IntakeProcess"},"_IntakeProcessOne":{"properties":{"model":{"type":"string","title":"Model","default":"claude-haiku-4-5-20251001"}},"type":"object","title":"_IntakeProcessOne"},"_IntakeSubmit":{"properties":{"title":{"type":"string","title":"Title","default":""},"text":{"type":"string","title":"Text"},"url":{"type":"string","title":"Url","default":""},"contributor_handle":{"type":"string","title":"Contributor Handle","default":""},"visitor_id":{"type":"string","title":"Visitor Id","default":""},"lang":{"type":"string","title":"Lang","default":"en"}},"type":"object","required":["text"],"title":"_IntakeSubmit","description":"Throw anything at the engine. Title optional; text required.\nURL optional. Contributor handle optional. No email required.\nvisitor_id optional — when supplied, the writing can be retrieved by\nthe writer via /scribe/mine without them having to save the receipt.\n\n`lang` optional: when not \"en\", the engine MTs the title + text to\nEnglish on store (for indexing + retrieval) and preserves the writer's\noriginal words alongside (so /scribe/mine renders them in the writer's\nlanguage)."},"_JournalSaveRequest":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"walk_id":{"type":"string","title":"Walk Id"},"situation":{"type":"string","title":"Situation","default":""},"gates":{"additionalProperties":{"type":"string"},"type":"object","title":"Gates","default":{}},"axes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Axes"},"archetypes_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Archetypes Summary"},"protocols_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocols Summary"},"lang":{"type":"string","title":"Lang","default":"en"}},"type":"object","required":["visitor_id","walk_id"],"title":"_JournalSaveRequest"},"_MTTranslateRequest":{"properties":{"text":{"type":"string","title":"Text"},"target_lang":{"type":"string","title":"Target Lang"},"source_lang":{"type":"string","title":"Source Lang","default":"en"}},"type":"object","required":["text","target_lang"],"title":"_MTTranslateRequest"},"_MasteryMark":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"unit_id":{"type":"string","title":"Unit Id"},"state":{"type":"string","title":"State","default":"mastered"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["visitor_id","unit_id"],"title":"_MasteryMark"},"_MintReceiptRequest":{"properties":{"intake_id":{"type":"string","title":"Intake Id"},"almanac_entry_id":{"type":"string","title":"Almanac Entry Id"},"almanac_entry_title":{"type":"string","title":"Almanac Entry Title","default":""},"contributor_handle":{"type":"string","title":"Contributor Handle","default":""},"operator_note":{"type":"string","title":"Operator Note","default":""}},"type":"object","required":["intake_id","almanac_entry_id"],"title":"_MintReceiptRequest","description":"Operator-only: mint a signed promotion receipt linking a Scribe\nintake submission to an almanac entry."},"_MisalignmentReview":{"properties":{"id":{"type":"string","title":"Id"},"status":{"type":"string","title":"Status"},"note":{"type":"string","title":"Note","default":""},"claim_pattern":{"type":"string","title":"Claim Pattern","default":""},"needed_math":{"type":"string","title":"Needed Math","default":""},"needed_substrate":{"type":"string","title":"Needed Substrate","default":""},"routing_pattern":{"type":"string","title":"Routing Pattern","default":""},"routing_domain":{"type":"string","title":"Routing Domain","default":""},"routing_spec_template":{"additionalProperties":true,"type":"object","title":"Routing Spec Template","default":{}}},"type":"object","required":["id","status"],"title":"_MisalignmentReview"},"_PolySessionClose":{"properties":{"session_id":{"type":"string","title":"Session Id"},"summary":{"type":"string","title":"Summary","default":""}},"type":"object","required":["session_id"],"title":"_PolySessionClose"},"_PolySessionOpen":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"initial_situation":{"type":"string","title":"Initial Situation","default":""}},"type":"object","required":["visitor_id"],"title":"_PolySessionOpen"},"_PolySessionTurn":{"properties":{"session_id":{"type":"string","title":"Session Id"},"situation":{"type":"string","title":"Situation"},"run_id":{"type":"string","title":"Run Id"},"refinement_note":{"type":"string","title":"Refinement Note","default":""}},"type":"object","required":["session_id","situation","run_id"],"title":"_PolySessionTurn"},"_QuarantineAirlock":{"properties":{"id":{"type":"string","title":"Id"},"route":{"type":"string","title":"Route"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["id","route"],"title":"_QuarantineAirlock","description":"The airlock sorts quarantine into one of three outcomes.\n\nroute:\n  - restore  : back to intake (the flush was a mistake)\n  - preserve : to data/samples/preserved.jsonl (failures we want\n               to learn from; not deleted)\n  - destroy  : actually removed (the real trash)"},"_RadioProduceRequest":{"properties":{"show":{"type":"string","title":"Show"},"ep_date":{"type":"string","title":"Ep Date"}},"type":"object","required":["show","ep_date"],"title":"_RadioProduceRequest"},"_RadioWriteRequest":{"properties":{"show":{"type":"string","title":"Show"},"ep_date":{"type":"string","title":"Ep Date"},"title":{"type":"string","title":"Title"},"script":{"type":"string","title":"Script"},"notes":{"type":"string","title":"Notes","default":""},"aired_at_iso":{"type":"string","title":"Aired At Iso","default":""}},"type":"object","required":["show","ep_date","title","script"],"title":"_RadioWriteRequest"},"_RegisterRequest":{"properties":{"handle":{"type":"string","title":"Handle"},"display_name":{"type":"string","title":"Display Name","default":""},"bio":{"type":"string","title":"Bio","default":""},"user_pubkey":{"type":"string","title":"User Pubkey","default":""}},"type":"object","required":["handle"],"title":"_RegisterRequest"},"_RobotAdmit":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"action_kind":{"type":"string","title":"Action Kind","default":"robot_action"},"payload_digest":{"type":"string","title":"Payload Digest","default":""},"risk_flags":{"items":{"type":"string"},"type":"array","title":"Risk Flags","default":[]},"escalation_level":{"type":"integer","title":"Escalation Level","default":1},"in_flow":{"type":"boolean","title":"In Flow","default":false},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context"}},"type":"object","required":["visitor_id"],"title":"_RobotAdmit"},"_RobotConsume":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"token_id":{"type":"string","title":"Token Id"},"request_id":{"type":"string","title":"Request Id"},"action_kind":{"type":"string","title":"Action Kind","default":"robot_action"},"payload_digest":{"type":"string","title":"Payload Digest","default":""},"risk_flags":{"items":{"type":"string"},"type":"array","title":"Risk Flags","default":[]},"escalation_level":{"type":"integer","title":"Escalation Level","default":1},"outcome":{"type":"string","title":"Outcome","default":"success"},"outcome_detail":{"type":"string","title":"Outcome Detail","default":""}},"type":"object","required":["visitor_id","token_id","request_id"],"title":"_RobotConsume"},"_RobotDefer":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"action_kind":{"type":"string","title":"Action Kind"},"why_deferred":{"type":"string","title":"Why Deferred"},"recommended_human":{"type":"string","title":"Recommended Human","default":""},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context"}},"type":"object","required":["visitor_id","action_kind","why_deferred"],"title":"_RobotDefer"},"_RobotRank":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"candidates":{"items":{"$ref":"#/components/schemas/_RobotRankCandidate"},"type":"array","title":"Candidates"}},"type":"object","required":["visitor_id","candidates"],"title":"_RobotRank"},"_RobotRankCandidate":{"properties":{"action_kind":{"type":"string","title":"Action Kind","default":"robot_action"},"payload_digest":{"type":"string","title":"Payload Digest","default":""},"risk_flags":{"items":{"type":"string"},"type":"array","title":"Risk Flags","default":[]},"escalation_level":{"type":"integer","title":"Escalation Level","default":1},"label":{"type":"string","title":"Label","default":""}},"type":"object","title":"_RobotRankCandidate"},"_RobotWelcome":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"operator_handle":{"type":"string","title":"Operator Handle","default":""},"robot_type":{"type":"string","title":"Robot Type","default":"unspecified"},"declared_corridor":{"type":"string","title":"Declared Corridor","default":""},"contact":{"type":"string","title":"Contact","default":""},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["visitor_id"],"title":"_RobotWelcome"},"_RobotWitness":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"event_kind":{"type":"string","title":"Event Kind"},"event_digest":{"type":"string","title":"Event Digest","default":""},"what_happened":{"type":"string","title":"What Happened"},"present_humans":{"items":{"type":"string"},"type":"array","title":"Present Humans","default":[]}},"type":"object","required":["visitor_id","event_kind","what_happened"],"title":"_RobotWitness"},"_SeedRequest":{"properties":{"query":{"type":"string","title":"Query"},"visitor_id":{"type":"string","title":"Visitor Id","default":""}},"type":"object","required":["query"],"title":"_SeedRequest","description":"Craft a seed from a search miss. The engine does the work once;\nevery future query references the seed."},"_SerialEdit":{"properties":{"title":{"type":"string","title":"Title"},"script":{"type":"string","title":"Script"},"summary":{"type":"string","title":"Summary","default":""},"continuity_note":{"type":"string","title":"Continuity Note","default":""}},"type":"object","required":["title","script"],"title":"_SerialEdit"},"_SerialGenerate":{"properties":{"direction":{"type":"string","title":"Direction","default":""},"target_minutes":{"type":"integer","title":"Target Minutes","default":10}},"type":"object","title":"_SerialGenerate"},"_StewardCorridorSet":{"properties":{"visitor_id":{"type":"string","title":"Visitor Id"},"template":{"type":"string","title":"Template","default":"default"},"ttl_hours":{"type":"integer","title":"Ttl Hours","default":12}},"type":"object","required":["visitor_id"],"title":"_StewardCorridorSet"},"_TriviaScoreIn":{"properties":{"name":{"type":"string","title":"Name","default":"Anonymous"},"score":{"type":"integer","title":"Score","default":0}},"type":"object","title":"_TriviaScoreIn"},"_WalkRequest":{"properties":{"situation":{"type":"string","title":"Situation"}},"type":"object","required":["situation"],"title":"_WalkRequest"},"_WitnessRequest":{"properties":{"witness_handle":{"type":"string","title":"Witness Handle"},"proposal_id":{"type":"string","title":"Proposal Id"},"proposal_author":{"type":"string","title":"Proposal Author","default":""},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["witness_handle","proposal_id"],"title":"_WitnessRequest"},"_WitnessSubmit":{"properties":{"walker_visitor_id":{"type":"string","title":"Walker Visitor Id"},"walk_id":{"type":"string","title":"Walk Id"},"witness_name":{"type":"string","title":"Witness Name"},"witness_role":{"type":"string","title":"Witness Role","default":""},"attestation":{"type":"string","title":"Attestation","default":""},"witness_pubkey":{"type":"string","title":"Witness Pubkey","default":""},"signature":{"type":"string","title":"Signature","default":""},"lang":{"type":"string","title":"Lang","default":"en"}},"type":"object","required":["walker_visitor_id","walk_id","witness_name"],"title":"_WitnessSubmit"},"api__app__VerifyRequest__1":{"properties":{"spec":{"additionalProperties":true,"type":"object","title":"Spec"}},"type":"object","required":["spec"],"title":"VerifyRequest"},"api__app__VerifyRequest__2":{"properties":{"tool":{"type":"string","title":"Tool"},"spec":{"additionalProperties":true,"type":"object","title":"Spec"}},"type":"object","required":["tool","spec"],"title":"VerifyRequest"},"api__notes__NoteIn":{"properties":{"card_id":{"type":"string","title":"Card Id"},"body":{"type":"string","title":"Body"},"author":{"type":"string","title":"Author"},"tradition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tradition"},"source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Label"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"}},"type":"object","required":["card_id","body","author"],"title":"NoteIn"},"api__stacks__NoteIn":{"properties":{"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"},"source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Label"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"bands":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bands"}},"type":"object","required":["title","body"],"title":"NoteIn"}}}}