{"openapi":"3.1.0","info":{"title":"Liminality Router Service","version":"1.1"},"paths":{"/account":{"post":{"tags":["onboarding"],"summary":"Create Account","description":"Capture a web signup. Stores the account (hashed password) + agreement\nacceptance. For the FREE plan, mints a 50-solve key and returns it so the\nsuccess page can reveal it immediately. Paid plans return {ok} and get their\nkey from Stripe fulfillment (emailed + revealed via /fulfill/session).","operationId":"create_account_account_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fulfill/session":{"get":{"tags":["onboarding"],"summary":"Fulfill Session","description":"In-page key reveal for a paid Stripe checkout session. Runs one\nfulfillment cycle (idempotent with the timer — mints + emails if not already)\nthen returns the key minted for THIS session id, if any. If fulfillment has\nnot caught up yet, returns {pending:true} and the buyer falls back to the\nemailed key.","operationId":"fulfill_session_fulfill_session_get","parameters":[{"name":"session_id","in":"query","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"}}}}}}},"/account/login":{"post":{"tags":["account-session"],"summary":"Login","description":"Retired. Redirect callers to the hosted WorkOS flow (see E_LOGIN_RETIRED).","operationId":"login_account_login_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/account/logout":{"post":{"tags":["account-session"],"summary":"Logout","operationId":"logout_account_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/account/me":{"get":{"tags":["account-session"],"summary":"Account Me","description":"Who this cookie is. key_label identifies the workspace; it is a NAME, not\na credential — nothing here can be used to call the API.","operationId":"account_me_account_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/account/exchange":{"post":{"tags":["account-session"],"summary":"Exchange","description":"Spend a single-use signup code for a session cookie. This is the handoff\nthe Liminal app performs instead of reading a key out of its own URL.","operationId":"exchange_account_exchange_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lead":{"post":{"tags":["lead"],"summary":"Capture Lead","description":"Capture an inbound consulting inquiry. Writes to the durable store FIRST,\nthen emits analytics + a notification best-effort. Returns {ok:true}.","operationId":"capture_lead_lead_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/templates":{"get":{"tags":["templates"],"summary":"Templates Catalog","description":"Keyless seeded catalog: ready-made flow routes plus per-slot starting values.","operationId":"templates_catalog_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/algorithms":{"get":{"tags":["algorithms"],"summary":"List Algorithms","description":"Keyless: every algorithm card, in catalog order.","operationId":"list_algorithms_algorithms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/algorithms/{algo_id}":{"get":{"tags":["algorithms"],"summary":"Get Algorithm","description":"One card by its machine key. Unknown key reads as a plain 404.","operationId":"get_algorithm_algorithms__algo_id__get","parameters":[{"name":"algo_id","in":"path","required":true,"schema":{"type":"string","title":"Algo Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/algorithm-versions":{"get":{"tags":["algorithms-runtime"],"summary":"List Algorithm Versions","description":"This caller's algorithm versions (draft, validated, released).","operationId":"list_algorithm_versions_algorithm_versions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["algorithms-runtime"],"summary":"Create Algorithm Version","description":"Create a draft from a spec (schema: contracts/liminality-algorithm-version-v1.schema.json).","operationId":"create_algorithm_version_algorithm_versions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/algorithm-versions/{version_id}":{"get":{"tags":["algorithms-runtime"],"summary":"Describe Algorithm Version","operationId":"describe_algorithm_version_algorithm_versions__version_id__get","parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/algorithm-versions/{version_id}/validate":{"post":{"tags":["algorithms-runtime"],"summary":"Validate Algorithm Version","operationId":"validate_algorithm_version_algorithm_versions__version_id__validate_post","parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/algorithm-versions/{version_id}/release":{"post":{"tags":["algorithms-runtime"],"summary":"Release Algorithm Version","operationId":"release_algorithm_version_algorithm_versions__version_id__release_post","parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/algorithm-versions/{version_id}/revise":{"post":{"tags":["algorithms-runtime"],"summary":"Revise Algorithm Version","description":"Revision = a NEW draft version; the parent is untouched.","operationId":"revise_algorithm_version_algorithm_versions__version_id__revise_post","parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionRevise"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets":{"get":{"tags":["algorithms-runtime"],"summary":"List Datasets","operationId":"list_datasets_datasets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["algorithms-runtime"],"summary":"Import Dataset","description":"Import rows as a new dataset version; dedupes by the declared key and reports rejected rows.","operationId":"import_dataset_datasets_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetImport"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}":{"get":{"tags":["algorithms-runtime"],"summary":"Describe Dataset","operationId":"describe_dataset_datasets__dataset_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/correct":{"post":{"tags":["algorithms-runtime"],"summary":"Correct Dataset","description":"Correct one observation → a NEW dataset version (the parent is untouched). Runs that\nread the corrected observation are marked stale; unrelated runs are listed untouched.","operationId":"correct_dataset_datasets__dataset_id__correct_post","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetCorrect"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/lineage":{"get":{"tags":["algorithms-runtime"],"summary":"Dataset Lineage","description":"Version chain, runs (with lineage state) and corrections for this dataset's chain.","operationId":"dataset_lineage_datasets__dataset_id__lineage_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/compatibility/{version_id}":{"get":{"tags":["algorithms-runtime"],"summary":"Dataset Compatibility","description":"AT23: can this dataset feed that algorithm version? Reports missing inputs / type mismatches.","operationId":"dataset_compatibility_datasets__dataset_id__compatibility__version_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scenarios":{"get":{"tags":["algorithms-runtime"],"summary":"List Scenarios","operationId":"list_scenarios_scenarios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["algorithms-runtime"],"summary":"Run Scenario","description":"Pure run: released algorithm version × dataset version × parameters. model_calls is measured.","operationId":"run_scenario_scenarios_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRun"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scenarios/{run_id}":{"get":{"tags":["algorithms-runtime"],"summary":"Get Scenario","operationId":"get_scenario_scenarios__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scenarios/{run_id}/replay":{"post":{"tags":["algorithms-runtime"],"summary":"Replay Scenario","description":"Re-execute a stored run from its recorded versions; stale runs still reproduce.","operationId":"replay_scenario_scenarios__run_id__replay_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scenarios/compare":{"post":{"tags":["algorithms-runtime"],"summary":"Compare Scenarios","operationId":"compare_scenarios_scenarios_compare_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioCompare"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/governance":{"get":{"summary":"Client Get Governance","description":"fix #5 (2026-07-25 audit): the 'Your rules' panel needs to READ the caller's\ncurrent state (final_say / model_rules / response_style / autopilot), not only\nwrite it — a panel with no GET can't render on load. Key-bound, safe defaults\nfor a caller who never set anything (governance.get_governance already returns\nthose).","operationId":"client_get_governance_governance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["governance"],"summary":"Client Set Governance","description":"Apply the user-control card's fills for the key-bound caller — and answer\nhonestly: 200 {ok: true, stored: true} only when every requested setting saved;\n503 {ok: false, stored: false, failed_settings, message} when any write failed.","operationId":"client_set_governance_governance_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/governance":{"get":{"summary":"Ws Governance Get Alias","description":"Alias: /ws/governance → /governance (GET, tenant governance settings).","operationId":"ws_governance_get_alias_ws_governance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["governance"],"summary":"Ws Governance Post Alias","description":"Alias: /ws/governance → /governance (POST). Shadowed alongside the primary\npath so the workspace surface reports the same honest write status.","operationId":"ws_governance_post_alias_ws_governance_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/releases":{"get":{"tags":["releases"],"summary":"Releases","operationId":"releases_releases_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/releases/latest":{"get":{"tags":["releases"],"summary":"Latest Release","operationId":"latest_release_releases_latest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","description":"Liveness + whether the model backend is reachable. In stub mode this does\nNO network round-trip (so it never hangs offline). On the public/sell plane the\nMODEL IDENTITY IS NOT EXPOSED (backend-visibility only, Jay 2026-06-16): a caller\ngets a reachable boolean, never the backend/model_id/local catalogue. The\nowner/local plane (no ROUTER_PLANE) still sees full detail for monitoring.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/inference":{"get":{"summary":"Inference Health","description":"Model readiness is intentionally separate from process liveness.","operationId":"inference_health_health_inference_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/inference/probe":{"post":{"summary":"Owner Inference Probe","description":"Run one bounded, owner-only inference probe through the served answer route\n(approved.main in contracts/liminality-model-policy-v2.json).\n\nThis endpoint deliberately performs no solve, persistence, billing, or route\npromotion.  Its only valid use is release readiness: exercise the exact\ndedicated-role and hourly-admission path before a release trusts the durable\nreadiness record.  The ``/owner/`` prefix is admin-gated on the public plane.","operationId":"owner_inference_probe_owner_inference_probe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/calibration/answer":{"get":{"summary":"Get Answer Calibration","description":"O81 U44 / S45: the deterministic calibration behind the app's confidence percentage.\nFitted from stored results that carry both the engine's raw score and an independent\ngrader verdict; reports raw vs held-out calibrated ECE. Reads disk; never fires a model.","operationId":"get_answer_calibration_calibration_answer_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/calibration":{"get":{"summary":"Get Calibration","description":"AAEL Phase-1 gate, made measurable (Constitution §4 rung 9 / §14 row 1): Brier + ECE\nover the logged (prediction → independent-verdict) pairs in the sm_records ledger, plus\nthe per-bin reliability map (the persisted-as-reference calibration map). Reads the\nledger; never fires the model. n=0 until rows accrue.\n\n`qtype` selects which prediction class to score: \"route\" = execution/research rows\n(world:spine / world:web verdicts); \"answer\" = the proposer+grader learn-loop rows\n(verdict_source=grader:<model>), where the grader's pass/fail IS the `actual` and the\nproposer's stated confidence is the forecast — so the learn loop's grades show up here.","operationId":"get_calibration_calibration_get","parameters":[{"name":"qtype","in":"query","required":false,"schema":{"type":"string","default":"route","title":"Qtype"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/frames":{"get":{"summary":"Get Frames","description":"The frame registry: id, when_to_use, and the workflow file each maps to.","operationId":"get_frames_frames_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/optimize":{"post":{"summary":"Optimize","description":"Bounded OFAT optimization against the caller's required stated objective.","operationId":"optimize_optimize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reduce":{"post":{"summary":"Reduce","description":"Recursive reducer: turn a question into a tree of definitive sub-questions\n(the algorithm in reduce.py). mode=fast => whole tree in ONE model call\n(seconds); mode=deep => per-node recursion (rigorous, ~40 calls, ~1 min).\nfmt=digest => a context-free, self-describing summary other models can consume.","operationId":"reduce_reduce_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReduceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/decide":{"post":{"summary":"Decide","description":"Closing layer: turn a decision question into a SCORED decision frame\n(objective / decision_rule / criteria / scored candidates / ranked /\nrecommendation) plus needs[] (what to fetch) and ask_user[] (what only the\nhuman can supply). The algorithm in reduce.decide_question.\n\nretrieval is executed by the calling agent via MCP; this endpoint returns the\ndecision frame + what to fetch. Service-side has no web tools, so retrieve\nstays None — the response carries the scored scaffold + needs[].","operationId":"decide_decide_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/distill":{"post":{"summary":"Distill Text","description":"Fast parser: a wall of raw text (voice memo, ramble, notes) -> clean\nself-contained questions + term bindings + context facts, in ONE model call.\nThe input-side complement of /reduce: distill binds, reduce decomposes.\nPersisted to decide_log.json like every closing-layer result.","operationId":"distill_text_distill_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistillRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/form":{"post":{"summary":"Form Build","description":"Dialogue protocol (PLAN P1): the ask-back form — at most 5 multiple-choice\nquestions covering the unknowns that change the outcome most. Persisted.\n\nASK-ONCE (§2): blanks the lever registry already answers for this caller are\nPRE-FILLED (surfaced as `prefilled`, dropped from the ask list). On the caller's\nFIRST route in a session (first_route=true) the result carries one `rules_prompt`\n— the single constraint ask, surfaced never blocking (§1 elicitation).\n\nverify_divergence=true (v2, opt-in — extra reduces, cache-aware): bind each\noption of the top 3 questions into the question, reduce each variant, and\nmeasure divergence (leaf-jaccard-v1). Zero divergence = noise-flagged;\nverified items re-ranked by measured divergence.","operationId":"form_build_form_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/form/apply":{"post":{"summary":"Form Apply","description":"Bind the user's form answers into the question and reduce the BOUND form\n(deterministic binding; reduce cached per bound question). The user's\nanswers are COLLECTED KNOWLEDGE (audit form finding #6): the fills + bound\nquestion + route_key are logged as a closing, so the knowledge base keeps\nwhat the user actually told us, not just what we asked.","operationId":"form_apply_form_apply_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormApplyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/compose":{"post":{"summary":"Compose Questions","description":"The reducer's INVERSE: many questions -> the single minimal parent question\n+ coverage map + uncovered/tension (the consistency check). One model call.\nPersisted to decide_log.json like every closing-layer result.","operationId":"compose_questions_compose_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComposeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/define":{"post":{"summary":"Define Semantic Record","description":"Bind canonical DEFINE to the existing typed SemanticRecord producer.","operationId":"define_semantic_record_define_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefineRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ground":{"post":{"summary":"Ground","description":"The SEAM (SPLICE-BUILD-SPEC steps 2+3): reduce the question (cached when\nseen before), digest it, then match every leaf against the endpoint registry\nwith the three-state verdict (executable-now / plannable / blocked; plannable\n= schema-known route, execution deferred until the connection is authorized —\na handoff, not a failure).\nReturns {digest, grounding} — the route skeleton plus how much of it is live.","operationId":"ground_ground_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroundRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/weights/verdict":{"post":{"summary":"Weights Verdict","description":"Apply ONE verified verdict to the (leaf, endpoint) edge — Bayesian counts,\nidempotent by run_id (SPLICE-BUILD-SPEC step 4). Callers must hold a real\nledger verdict; weights order the search, gates decide validity.\n\nAUTH (C6, audit weights-earned #1): on the sell config (ROUTER_REQUIRE_KEY=1)\nthis path is in AUTH_PATHS — a valid API key is required (no quota), and the\ncaller's key LABEL is stamped into verdict_source so every write is\nattributable. Gate off (local/dev) = unchanged.","operationId":"weights_verdict_weights_verdict_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerdictRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/weights":{"get":{"summary":"Weights All","description":"Every earned edge weight with evidence + trusted flag (audit view).","operationId":"weights_all_weights_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ws/weights":{"get":{"summary":"Client Weights","description":"Caller-owned learning rows for Liminal; never the global audit map.","operationId":"client_weights_ws_weights_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/verdict":{"post":{"summary":"Client Verdict","description":"fix #7 (2026-07-25 audit): the customer app's one-tap 'Did this work?' on a\nresult. /weights/verdict needs leaf/endpoint/run_id — internal route-graph\nconcepts the front end never has; a customer only has the result_id a solve/\nchart response already carries. Delegates to the SAME grading path the MCP\n`report_outcome` tool uses (mcp_server.server.report_outcome, keyed off\nresult_id via result_binding), so a tap here earns the route exactly like an\nagent calling report_outcome does — same weights, same feedback ledger, same\nrk promotion (solved -> executed/verified). Key-required (AUTH_PATHS), no\nquota burn — this is feedback on an ask already made, not a new one.","operationId":"client_verdict_verdict_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultVerdict"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/answer":{"post":{"summary":"Answer","description":"C2: /answer = the renamed /solve — a model-synthesized answer grounded in\nthe reduction. EXECUTES NOTHING; POST /execute fires routes.","operationId":"answer_answer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/solve":{"post":{"summary":"Solve","description":"DEPRECATED alias of /answer (C2). Same payload + a deprecation pointer.\nKept so existing callers don't break; new callers use /answer (synthesis)\nor /execute (actually fire a mapped route).","operationId":"solve_solve_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/public/metrics":{"get":{"summary":"Public Metrics","description":"Keyless aggregate for the physea.ai /proof live-metrics section (OBJ-14).\nAggregate-only by design — no caller identities, no question text; the\npublic/private boundary stays intact. Shape versioned in the payload\n(\"physea.public-metrics/1\") so site templates can rely on it.","operationId":"public_metrics_public_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/demo/solve":{"post":{"summary":"Demo Solve","description":"Keyless, IP-rate-limited preview for the physea.ai/mcp hero. Returns the\nSTRUCTURAL result — the reduction (objective + the definitive sub-questions\nthe request breaks into) — NOT a full deep synthesis. The structural artifact\nis the real wedge per the conversion audit, and it's cheap + abuse-resistant\n(one model call at a shallow depth, cache bypassed so demo traffic never\nwrites to the shared path-DB).\n\nReuses the existing solve path (reduce.reduce_oneshot + reduce.to_digest) at\nlow depth; invents no new engine. Over the per-IP cap -> 429 with a message\nthe hero shows. Lives outside the /mcp key gate (see the module note above).","operationId":"demo_solve_demo_solve_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSolveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/solve/free":{"post":{"summary":"Solve Free","description":"FIRST SOLVE FREE (Jay 2026-07-06): real, rate-limited WORKED solves for a\nkeyless visitor, BEFORE any account wall — the wall moves to save / re-run. Unlike\n/demo/solve (which returns only the reduction), this routes through the SAME grounded\nfront door as /answer and the MCP `solve` tool, then projects the envelope down to a\nkeyless-safe surface (owner/scaffolding fields stripped; caller-scoped savings\nnever appear — app/free_solve.project_envelope is an allowlist).\n\nReversible knob: dark unless ROUTER_FREE_FIRST_SOLVE=1. The 50 free solves are\ncounted on the account, else the browser install (X-Liminal-Install), and the\naddress is only an abuse floor (Jay 2026-09-07 12:30). Every count reads a DURABLE\nledger so it survives the service restart that enables this. Limit/disabled/error\nreturn a clean 200 with ok:false (never a 500), so the hero can branch instead of\nerroring; the two allowance refusals also carry a LIM-FREE-* coded `error`. The\nsolve banks under caller 'anon-web' so keyless traffic never pollutes the owner\nlibrary. Lives outside the /mcp key gate, same as /demo/solve.","operationId":"solve_free_solve_free_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSolveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hooks/posthog":{"post":{"summary":"Posthog Hook","description":"Receiver for a PostHog webhook Destination (Jay 2026-06-26): PostHog POSTs\nhigh-value events here so our own system can act on them + ping Slack/Discord.\nShared-secret gated (POSTHOG_HOOK_SECRET via ?token= or X-Hook-Secret header);\nif no secret is configured we refuse (fail closed — a public action endpoint\nmust not be wide open). Best-effort fan-out; always 200 so PostHog won't retry-storm.","operationId":"posthog_hook_hooks_posthog_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/funnel":{"get":{"summary":"Owner Funnel","description":"OWNER plane: the conversion curve. Demo previews (demo_hits.jsonl) ->\nsignups (accounts.json) -> paid (fulfillments.json). Pure read, never raises.\nCounts today + last-7-days + all-time so the taste-solve's effect is visible\nas external traffic arrives (baseline today = ~0).","operationId":"owner_funnel_owner_funnel_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/growth":{"get":{"summary":"Owner Growth","description":"OWNER plane — the acquisition funnel for the 5 outreach plays, OWNER-FILTERED.\ndiscovery -> install -> activation -> retention/reuse + the north-star (new\nexternal callers reaching first route-reuse) + honest per-play attribution.\nPure read, never raises; ~93% of traffic is owner/internal and is filtered out\nso what's left is the real external signal. See app/growth_metrics.py.","operationId":"owner_growth_owner_growth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/library":{"get":{"summary":"Owner Library","description":"OWNER plane (PLAN P6): the library as a MAP, not a dump.\n\nSummaries only — truncated questions, counts, kinds, timestamps. Never the\ntrees, results, or route payloads (the two-planes rule: display the map,\nnot the data; the owner desktop app's Library tab consumes this). Every\nfile is read defensively: missing/corrupt -> empty, never a 500.\n\nC3 (Jay's organizing principle, 2026-06-11): entries are categorized by the\nCONTENT itself — vertical / activity / topic from app/data/categories.json\n(missing -> \"uncategorized\"; new entries are lazily categorized best-effort\nin the background, never blocking this endpoint). Yield records (the made\nobjects) join the entries as kind \"yield\". counts gains by_vertical /\nby_activity + the knowledge-base totals (yields, axioms, runs, verdicts).","operationId":"owner_library_owner_library_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/entry":{"get":{"summary":"Owner Entry","description":"C4 drill-in: ONE library entry in full. Lookup by `id` (the sha16\ncategories key — sha1(question.strip().lower())[:16] — OR a raw store key:\na reduce-cache \"ns|depth|question\" key or a yield-record id) or by\n`question` (exact text, normalized). Returns {question, kind, vertical,\nactivity, topic, ts, payload} where payload is the stored reduction tree |\ndecide frame | yield record, VERBATIM. 404 when nothing matches.","operationId":"owner_entry_owner_entry_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Id"}},{"name":"question","in":"query","required":false,"schema":{"type":"string","default":"","title":"Question"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/telemetry":{"get":{"summary":"Owner Telemetry","description":"OWNER plane (K4): usage rollups from the per-request telemetry ledger —\n{by_path (count/errors/avg_ms), reuse_rate (cache hits / reduce calls; null\nuntil there ARE reduce calls), by_caller (key label or \"owner\"), last_24h}.\n\nPure read over app/data/telemetry.jsonl (+ its one rotated generation);\nmissing/corrupt file => empty rollups, never a 500. Admin-gated on the sell\nconfig automatically: this path matches the /owner/ prefix in\nmetering.AUTH_PATHS (verified in tests/test_telemetry.py).","operationId":"owner_telemetry_owner_telemetry_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/savings":{"get":{"summary":"Owner Savings","description":"OWNER plane — Token Yield v2 (2026-07-09), THE product number: per COMPLETED task\n(report_outcome worked=true), tokens the caller's model would have spent completing the\ntask ALONE minus what it actually spent using Liminality, summed.\n\nShape:\n  {tokens_saved_total, usd_saved_total, tasks_completed, avg_tokens_saved_per_task,\n   basis_breakdown:{measured, estimated}, by_caller, price_basis, legend}\n\ntokens_saved_total/usd_saved_total/tasks_completed are CUMULATIVE across all completed\ntasks; an uncompleted task (worked=false or never graded) contributes nothing — this\nnumber only grows from real, reported completions, never from raw call volume. Pure read\nover app/data/savings.json (savings.task_rollup); missing/corrupt store => an honest\nall-zero rollup, never a 500. Admin-gated via the /owner/ prefix in metering.AUTH_PATHS\n(same as /owner/telemetry). Savings is telemetry — it never gates anything.","operationId":"owner_savings_owner_savings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/frequent":{"get":{"summary":"Owner Frequent","description":"OWNER plane (K7 surface): the top frequent questions + their best known\npath (trusted edges) + untried-alternatives count, read from\nconverge.top_frequent.\n\nLAZY import + EMPTY-SAFE: converge.py is the convergence builder's module —\nwhen it (or its counts file) is absent or failing, this returns\n{\"frequent\": []} with an honest note, never a 500. Admin-gated via the\n/owner/ prefix in metering.AUTH_PATHS (same as /owner/telemetry).","operationId":"owner_frequent_owner_frequent_get","parameters":[{"name":"n","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"N"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/keys":{"get":{"summary":"Owner Keys List","description":"OWNER plane — list issued keys with the key value MASKED (last 4 only) +\nlive usage count/plan. Pure read; the raw keys never leave the server.","operationId":"owner_keys_list_owner_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Owner Keys","description":"Mint a customer API key (C6 — key issuance without hand-editing a file\non the server; audit caller-plane finding #2). Appends to the gitignored\napp/data/api_keys.json and returns the key ONCE. Admin-gated: on the sell\nconfig (ROUTER_REQUIRE_KEY=1) the metering middleware requires the ADMIN\nkey for every /owner/* path.","operationId":"owner_keys_owner_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyMintRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/handoff/list":{"get":{"summary":"Handoff List","description":"List only the API-key-bound caller's live checkpoint summaries.","operationId":"handoff_list_handoff_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/handoff/create":{"post":{"summary":"Handoff Create","description":"Create a checkpoint as the API-key-bound caller; caller ids are not accepted.","operationId":"handoff_create_handoff_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HandoffCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delegation/list":{"get":{"summary":"Activity Delegation List","description":"List all caller-owned delegations, including historical ids not in this session.","operationId":"activity_delegation_list_delegation_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/delegation/launch":{"post":{"summary":"Activity Delegation Launch","operationId":"activity_delegation_launch_delegation_launch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegationLaunchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delegation/reported":{"post":{"summary":"Activity Delegation Reported","operationId":"activity_delegation_reported_delegation_reported_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegationResumeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delegation/accept":{"post":{"summary":"Activity Delegation Accept","operationId":"activity_delegation_accept_delegation_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegationResumeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delegation/create":{"post":{"summary":"Delegation Create","description":"Create a bounded subagent packet from this caller's parent handoff.","operationId":"delegation_create_delegation_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegationCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delegation/resume":{"post":{"summary":"Delegation Resume","description":"Resume only a delegation owned by the API-key-bound caller.","operationId":"delegation_resume_delegation_resume_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegationResumeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delegation/report":{"post":{"summary":"Delegation Report","description":"Return bounded evidence to the orchestrator without merging automatically.","operationId":"delegation_report_delegation_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegationReportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/handoff/resume":{"post":{"summary":"Handoff Resume","description":"Resume an inline or stored checkpoint belonging to the bound caller.","operationId":"handoff_resume_handoff_resume_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HandoffResumeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/execute":{"post":{"summary":"Execute Route","description":"C1 — CLICK-TO-EXECUTE (\"we ask a question. Questions are solved. And I go\nto execute... I could just click a thing and execute\"). Body: {\"record_id\":\n<yield record id>} OR {\"question\": <text resolving to a record>}.\n\nWraps the SAME execution path the MCP execute_algorithm verb uses\n(execution.execute) to map the route; for records carrying an\nexecution_blueprint it runs motherboard/engine/spine.run_blueprint — the\nreal runtime, runnable-prefix semantics.\n\nHONESTY: nothing fake-fires. steps[] reports exactly what happened:\n\"fired\" (ran with a confirm), \"blocked\" (could not fire — the recruit\nlane), \"skipped\" (not reached / mapped only). A record with no resolved\nblueprint is MAPPED (skipped steps), never pretend-run. The engine being\nunimportable is a 503, never a crash.","operationId":"execute_route_execute_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workaround":{"post":{"summary":"Workaround Route","description":"C5 — the visible workaround search (\"seeing it make a workaround, and\nseeing it look and check for things that are going on\"). Body: {goal,\nblocked}. Wraps motherboard/engine/workaround.py: the model PROPOSES\nsubstitute/compose/recruit moves and each is FEASIBILITY-GATED against the\nlive effect backends (sweep.LIVE). NO EXECUTION — proposals only; /execute\nfires routes. Engine unimportable -> clean 503, never a crash.","operationId":"workaround_route_workaround_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkaroundRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workaround/leaf":{"post":{"summary":"Workaround Leaf Route","description":"WORKAROUND = BRANCH AT LEAF (Deterministic Liminal, 2026-09-08). Body: {tree, leaf_id,\nvalue, source_ref?, caller?}. `tree` is a reduce tree OR a decide frame; `leaf_id` a leaf key\n('leaf-<16hex>'), the exact leaf text, a child-index path ('root.0.2'), or a decide address\n('candidate:<name>.<criterion>' / 'criterion:<name>.weight' / an ask_user need). The original\nis NEVER edited: the answer is a named pivot leaf and BOTH branches — main (untouched) and the\nbranch with the asserted value applied and downstream re-derived (tree: ancestors marked\nstale; decide: scores/ranked recomputed from the frozen criteria). The assertion is persisted\nas a PRIVATE fact on its own branch for the caller resolved SERVER-SIDE (_pref_caller: bound\nidentity wins; explicit override only off the sell plane). Zero model calls. Coded failures:\n404 E_WA_LEAF_NOT_FOUND / 409 E_WA_AMBIGUOUS (body echoes code + candidates) — never a\nsilent pick.","operationId":"workaround_leaf_route_workaround_leaf_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkaroundLeafRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/build_algorithm":{"post":{"summary":"Build Algorithm Route","description":"Build or reuse the best known algorithm for a goal.","operationId":"build_algorithm_route_build_algorithm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildAlgorithmRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/swap":{"post":{"summary":"Swap Route","description":"Swap one subject/process slot and re-clamp the node.","operationId":"swap_route_swap_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwapRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/extract":{"post":{"summary":"Extract Route","description":"Read an existing library recipe without building or mutating it.","operationId":"extract_route_extract_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Ui","description":"Serve the root page for the plane this instance is running as.\n\nP2 change: Owner plane (:8795, ROUTER_REQUIRE_KEY off) now redirects to /console\n(the Liminal two-versions consolidated app) with a 301. Sell plane (:8796,\nROUTER_REQUIRE_KEY=1) serves static/landing.html — pricing + quickstart with\nthe live pay link ({{PAY_URL}}, same resolution chain as the 402) and this\nrequest's own external base URL ({{BASE_URL}}, honoring X-Forwarded-Proto\nfrom cloudflared) substituted at serve time. Paths resolved relative to this\nmodule (NOT cwd); each falls back so the route never 500s.","operationId":"ui__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/console":{"get":{"summary":"Console","description":"The Liminal two-versions console (P2 backend seam): serves the P1 SPA shell\n(router-service/static/app/index.html) on BOTH planes (:8795 owner, :8796 sell)\nwith data-plane templating. {{PLANE}} is templated server-side into the body tag:\n\"owner\" (keyless :8795) or \"sell\" (key-gated :8796). An absent or invalid plane\nvalue fails CLOSED to sell — the gate stays up. If the P1 shell is not yet built,\nserves an honest placeholder page with the same data-plane mechanics + Liminal 1.11\ntitle, so P2 tests can self-contain (P1 builds in parallel).","operationId":"console_console_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ws/me":{"get":{"summary":"Ws Me Alias","description":"Alias: /ws/me → /me (GET, keyed workspace identity).","operationId":"ws_me_alias_ws_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ws/my/context":{"get":{"summary":"Ws My Context Alias","description":"Alias: /ws/my/context → /my/context (GET, keyed caller context).","operationId":"ws_my_context_alias_ws_my_context_get","parameters":[{"name":"subject","in":"query","required":false,"schema":{"type":"string","default":"","title":"Subject"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/chart":{"post":{"summary":"Ws Chart Alias","description":"Alias: /ws/chart → /chart (POST, keyed solve/route).","operationId":"ws_chart_alias_ws_chart_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/artifacts":{"get":{"summary":"Ws Artifacts Get Alias","description":"Alias: /ws/artifacts → /artifacts (GET, list saved artifacts).","operationId":"ws_artifacts_get_alias_ws_artifacts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Ws Artifacts Post Alias","description":"Alias: /ws/artifacts → /artifacts (POST, save artifact).","operationId":"ws_artifacts_post_alias_ws_artifacts_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/artifacts/{artifact_id}/run":{"post":{"summary":"Ws Artifact Run Alias","description":"Alias: /ws/artifacts/{artifact_id}/run → /artifacts/{artifact_id}/run (POST, replay).","operationId":"ws_artifact_run_alias_ws_artifacts__artifact_id__run_post","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/workspace/imports":{"get":{"summary":"Ws Workspace Imports Get Alias","description":"Alias: /ws/workspace/imports → /workspace/imports.","operationId":"ws_workspace_imports_get_alias_ws_workspace_imports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ws/workspace/import":{"post":{"summary":"Ws Workspace Import Post Alias","description":"Alias: /ws/workspace/import → /workspace/import.","operationId":"ws_workspace_import_post_alias_ws_workspace_import_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/usage":{"get":{"summary":"Ws Usage Alias","description":"Alias: /ws/usage → /usage (GET, tenant usage/billing).","operationId":"ws_usage_alias_ws_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ws/connect":{"get":{"summary":"Ws Connect Alias","description":"Alias: /ws/connect → /connect, preserving the optional toolkit query.","operationId":"ws_connect_alias_ws_connect_get","parameters":[{"name":"toolkit","in":"query","required":false,"schema":{"type":"string","default":"","title":"Toolkit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/reduce":{"post":{"summary":"Ws Reduce Alias","description":"Alias: /ws/reduce → /reduce (POST, decompose a question).","operationId":"ws_reduce_alias_ws_reduce_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReduceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/ground":{"post":{"summary":"Ws Ground Alias","description":"Alias: /ws/ground → /ground (POST, match leaves to endpoints).","operationId":"ws_ground_alias_ws_ground_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroundRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/distill":{"post":{"summary":"Ws Distill Alias","description":"Alias: /ws/distill → /distill (POST, raw text → clean questions).","operationId":"ws_distill_alias_ws_distill_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistillRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/context/answer":{"post":{"summary":"Ws Context Answer Alias","description":"Alias: /ws/context/answer → /context/answer (POST, answer one leaf → private fact).","operationId":"ws_context_answer_alias_ws_context_answer_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/context/facts":{"get":{"summary":"Ws Context Facts Alias","description":"Alias: /ws/context/facts → /context/facts (GET, the caller's answered leaves).","operationId":"ws_context_facts_alias_ws_context_facts_get","parameters":[{"name":"caller","in":"query","required":false,"schema":{"type":"string","default":"","title":"Caller"}},{"name":"entity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Entity"}},{"name":"topic","in":"query","required":false,"schema":{"type":"string","default":"","title":"Topic"}},{"name":"tag","in":"query","required":false,"schema":{"type":"string","default":"","title":"Tag"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/context/dump":{"post":{"summary":"Ws Context Dump Alias","description":"Alias: /ws/context/dump → /context/dump (POST, paste → private typed facts; the paste\nbox's 'remember this for me' path). Same auth, same payload, no logic.","operationId":"ws_context_dump_alias_ws_context_dump_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextDumpRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/context/dump/upload":{"post":{"summary":"Ws Context Dump Upload Alias","description":"Alias: /ws/context/dump/upload → /context/dump/upload (POST multipart file).","operationId":"ws_context_dump_upload_alias_ws_context_dump_upload_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ws/context/dump/search":{"get":{"summary":"Ws Context Dump Search Alias","description":"Alias: /ws/context/dump/search → /context/dump/search (GET).","operationId":"ws_context_dump_search_alias_ws_context_dump_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"k","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"K"}},{"name":"caller","in":"query","required":false,"schema":{"type":"string","default":"","title":"Caller"}},{"name":"exact_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Exact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/verdict":{"post":{"summary":"Ws Verdict Alias","description":"Alias: /ws/verdict → /verdict (POST, 'did this work?' on a result).","operationId":"ws_verdict_alias_ws_verdict_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultVerdict"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/workaround":{"post":{"summary":"Ws Workaround Alias","description":"Alias: /ws/workaround → /workaround (POST, named workarounds for a blocker).","operationId":"ws_workaround_alias_ws_workaround_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkaroundRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/workaround/leaf":{"post":{"summary":"Ws Workaround Leaf Alias","description":"Alias: /ws/workaround/leaf → /workaround/leaf (POST, branch a reduce tree / decide frame\nat a named leaf; both branches kept).","operationId":"ws_workaround_leaf_alias_ws_workaround_leaf_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkaroundLeafRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/traces":{"get":{"summary":"Ws Traces Alias","description":"Alias: /ws/traces → /traces (GET, the caller's own run step-chains).","operationId":"ws_traces_alias_ws_traces_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"}}}}}}},"/ws/map":{"get":{"summary":"Ws Map Alias","description":"Alias: /ws/map → /map (GET, the caller's own concept/algorithm map).","operationId":"ws_map_alias_ws_map_get","parameters":[{"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"}}}}}}},"/ws/keys":{"get":{"summary":"Ws Keys Get Alias","description":"Alias: /ws/keys → /keys (GET, the caller's org's keys, masked to last-4).","operationId":"ws_keys_get_alias_ws_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Ws Keys Post Alias","description":"Alias: /ws/keys → /keys (POST, mint a sibling seat key in the caller's own org).","operationId":"ws_keys_post_alias_ws_keys_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/keys/revoke":{"post":{"summary":"Ws Keys Revoke Alias","description":"Alias: /ws/keys/revoke → /keys/revoke (POST, revoke an own-org key by last-4).","operationId":"ws_keys_revoke_alias_ws_keys_revoke_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/keys/rotate":{"post":{"summary":"Ws Keys Rotate Alias","description":"Alias: /ws/keys/rotate → /keys/rotate (atomic own-org replacement).","operationId":"ws_keys_rotate_alias_ws_keys_rotate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/loops":{"get":{"summary":"Ws Loops Get Alias","description":"Alias: /ws/loops → /loops (GET, the caller's scheduled route loops).","operationId":"ws_loops_get_alias_ws_loops_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Ws Loops Post Alias","description":"Alias: /ws/loops → /loops (POST, schedule a saved route).","operationId":"ws_loops_post_alias_ws_loops_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/loops/{loop_id}/toggle":{"post":{"summary":"Ws Loop Toggle Alias","description":"Alias: /ws/loops/{id}/toggle → /loops/{id}/toggle (POST, pause or resume).","operationId":"ws_loop_toggle_alias_ws_loops__loop_id__toggle_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}}],"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"}}}}}}},"/ws/loops/{loop_id}/delete":{"post":{"summary":"Ws Loop Delete Alias","description":"Alias: /ws/loops/{id}/delete → /loops/{id}/delete (POST, delete a loop).","operationId":"ws_loop_delete_alias_ws_loops__loop_id__delete_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/handoff/list":{"get":{"summary":"Ws Handoff List Alias","description":"Alias: /ws/handoff/list → /handoff/list (GET, the caller's checkpoints).","operationId":"ws_handoff_list_alias_ws_handoff_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ws/handoff/create":{"post":{"summary":"Ws Handoff Create Alias","description":"Alias: /ws/handoff/create → /handoff/create (POST, save a checkpoint).","operationId":"ws_handoff_create_alias_ws_handoff_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HandoffCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/handoff/resume":{"post":{"summary":"Ws Handoff Resume Alias","description":"Alias: /ws/handoff/resume → /handoff/resume (POST, resume a checkpoint).","operationId":"ws_handoff_resume_alias_ws_handoff_resume_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/composio/connect":{"post":{"summary":"Composio Connect Post","description":"Composio connect initiation: toolkit connect flow (POST /composio/connect).\nReturns Composio-hosted OAuth URL for the requested toolkit.","operationId":"composio_connect_post_composio_connect_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/checkout/quote":{"get":{"summary":"Checkout Quote","description":"Side-effect-free pre-charge quote for the metered solve checkout.\n\n``mode=test`` is the review/replay seam: it returns the exact production\neconomics and consequences but cannot create a Stripe session or charge.","operationId":"checkout_quote_checkout_quote_get","parameters":[{"name":"mode","in":"query","required":false,"schema":{"type":"string","default":"live","title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pay/payg":{"get":{"summary":"Pay Payg","description":"Pay-as-you-go signup (metered solve subscription). Stripe Payment\nLinks do not support metered prices (Stripe 400, verified 2026-06-12), so\nthis endpoint mints a Checkout Session on demand and redirects the buyer to\nit — the 402's static pay_url points HERE. Composio resolves its key via\nenv -> file -> the persistent Bitwarden session, all available to the gate\nservice.\n\nW10 (AT35, brief §13): a FAILED pay-as-you-go checkout must NOT substitute a\nmonthly commitment. On failure this answers a coded ``LIM-PAY-001`` body (HTTP\n503) that lists the explicit ``choices`` — retry PAYG, choose Monthly (only when\na monthly link is configured), or contact a human — and never redirects on the\ncustomer's behalf. Never a 500, never a redirect loop back to this path.\n``?choice=monthly`` is the customer's EXPLICIT selection and is the only way\nthis endpoint sends anyone to the monthly link.","operationId":"pay_payg_pay_payg_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/logo.png":{"get":{"summary":"Logo Png","description":"The MCP logo (referenced by ai-plugin.json; Claude directory needs an icon).","operationId":"logo_png_logo_png_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/q/{slug}":{"get":{"summary":"Answer Page","description":"Server-rendered, citable answer page for one stored solve. 404 on miss.","operationId":"answer_page_q__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap Xml","operationId":"sitemap_xml_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","description":"llms.txt — the agent-facing front door (llmstxt.org convention). Models\nand crawlers that land on the site read this instead of the styled HTML.","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/.well-known/mcp":{"get":{"summary":"Mcp Discovery","description":"Machine-readable MCP connection descriptor, so directories and agents can\ndiscover the endpoint + auth scheme without scraping the landing page. The\nbare `/.well-known/mcp` alias is what some agents probe first.","operationId":"mcp_discovery__well_known_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/mcp.json":{"get":{"summary":"Mcp Discovery","description":"Machine-readable MCP connection descriptor, so directories and agents can\ndiscover the endpoint + auth scheme without scraping the landing page. The\nbare `/.well-known/mcp` alias is what some agents probe first.","operationId":"mcp_discovery__well_known_mcp_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/agent":{"get":{"summary":"Agent Card","description":"A2A-style agent card: lets agent directories and orchestrators discover\nwhat Liminality does + how to reach it, without scraping the landing page.","operationId":"agent_card_agent_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/agent-card.json":{"get":{"summary":"Agent Card","description":"A2A-style agent card: lets agent directories and orchestrators discover\nwhat Liminality does + how to reach it, without scraping the landing page.","operationId":"agent_card__well_known_agent_card_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/agent.json":{"get":{"summary":"Agent Card","description":"A2A-style agent card: lets agent directories and orchestrators discover\nwhat Liminality does + how to reach it, without scraping the landing page.","operationId":"agent_card__well_known_agent_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sse":{"get":{"summary":"Sse Pointer","description":"Agents probing the legacy SSE transport path: tell them where the live\nstreamable-HTTP endpoint is instead of bouncing them on a 404.","operationId":"sse_pointer_sse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/ai-plugin.json":{"get":{"summary":"Ai Plugin Manifest","description":"Minimal ChatGPT-plugin manifest, so plugin/agent discovery surfaces that\nstill look for ai-plugin.json find Liminality.","operationId":"ai_plugin_manifest__well_known_ai_plugin_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-protected-resource":{"get":{"summary":"Oauth Protected Resource","description":"RFC 9728 protected-resource metadata: tells an MCP client which OAuth\nauthorization server issues tokens for this resource. A 401 from /mcp points\nhere via WWW-Authenticate; the client fetches this, finds the auth server, runs\nOAuth, and retries with a Bearer token. Returns 404 when OAuth is disabled so we\ndon't advertise a flow that isn't live.","operationId":"oauth_protected_resource__well_known_oauth_protected_resource_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-protected-resource/mcp":{"get":{"summary":"Oauth Protected Resource","description":"RFC 9728 protected-resource metadata: tells an MCP client which OAuth\nauthorization server issues tokens for this resource. A 401 from /mcp points\nhere via WWW-Authenticate; the client fetches this, finds the auth server, runs\nOAuth, and retries with a Bearer token. Returns 404 when OAuth is disabled so we\ndon't advertise a flow that isn't live.","operationId":"oauth_protected_resource__well_known_oauth_protected_resource_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-authorization-server/mcp":{"get":{"summary":"Oauth Authorization Server","description":"Redirect authorization-server-metadata probes to the real AS (AuthKit).\n\nCorrect MCP clients read `authorization_servers` from the protected-resource\nmetadata (above) and fetch AS metadata FROM the AS. But several deployed clients\n— and the MCP 2025-03-26 auth flow, which assumes the MCP server is its own\nauthorization server — instead probe RFC 8414 metadata on the RESOURCE origin.\nWithout a handler here they 404 and dead-end at the /mcp 401. Observed live\n2026-07-02: external clients (and Jay's own connector test) hit all four AS/OIDC\nwell-known paths on this origin, every one 404, then bounced back to 401 — the\n\"MCP not working for users\" report. A 302 to AuthKit's own well-known keeps the\nreturned metadata `issuer` matching the final fetch origin (RFC 8414 §3.3), so\nstrict clients accept it and inbound token validation is unchanged. The X-API-Key\npath is untouched. 404 when OAuth is disabled (there is no AS to point at).","operationId":"oauth_authorization_server__well_known_oauth_authorization_server_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-authorization-server":{"get":{"summary":"Oauth Authorization Server","description":"Redirect authorization-server-metadata probes to the real AS (AuthKit).\n\nCorrect MCP clients read `authorization_servers` from the protected-resource\nmetadata (above) and fetch AS metadata FROM the AS. But several deployed clients\n— and the MCP 2025-03-26 auth flow, which assumes the MCP server is its own\nauthorization server — instead probe RFC 8414 metadata on the RESOURCE origin.\nWithout a handler here they 404 and dead-end at the /mcp 401. Observed live\n2026-07-02: external clients (and Jay's own connector test) hit all four AS/OIDC\nwell-known paths on this origin, every one 404, then bounced back to 401 — the\n\"MCP not working for users\" report. A 302 to AuthKit's own well-known keeps the\nreturned metadata `issuer` matching the final fetch origin (RFC 8414 §3.3), so\nstrict clients accept it and inbound token validation is unchanged. The X-API-Key\npath is untouched. 404 when OAuth is disabled (there is no AS to point at).","operationId":"oauth_authorization_server__well_known_oauth_authorization_server_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/openid-configuration/mcp":{"get":{"summary":"Openid Configuration","description":"OIDC-discovery variant of the AS-metadata redirect above: some clients probe\nopenid-configuration rather than oauth-authorization-server. Same rationale, same\n§3.3 issuer-match guarantee; redirects to AuthKit's openid-configuration.","operationId":"openid_configuration__well_known_openid_configuration_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/openid-configuration":{"get":{"summary":"Openid Configuration","description":"OIDC-discovery variant of the AS-metadata redirect above: some clients probe\nopenid-configuration rather than oauth-authorization-server. Same rationale, same\n§3.3 issuer-match guarantee; redirects to AuthKit's openid-configuration.","operationId":"openid_configuration__well_known_openid_configuration_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/mcp-server-card":{"get":{"summary":"Mcp Server Card","description":"SEP-1649 MCP Server Card. Served at the spec path (/.well-known/mcp-server-card)\nAND the directory-style alias (/.well-known/mcp/server-card.json) that Smithery and\nthe isitagentready audit probe.","operationId":"mcp_server_card__well_known_mcp_server_card_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/mcp/server-card.json":{"get":{"summary":"Mcp Server Card","description":"SEP-1649 MCP Server Card. Served at the spec path (/.well-known/mcp-server-card)\nAND the directory-style alias (/.well-known/mcp/server-card.json) that Smithery and\nthe isitagentready audit probe.","operationId":"mcp_server_card__well_known_mcp_server_card_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/api-catalog":{"get":{"summary":"Api Catalog","description":"RFC 9727 API catalog as application/linkset+json (Appendix A shape): a single\n`linkset` entry anchored at the API base, with service-desc (the OpenAPI spec\nFastAPI auto-serves), service-doc (the human page), and status (the health route).\nMust NOT default to application/json — set the linkset media type explicitly.","operationId":"api_catalog__well_known_api_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/agent-skills/index.json":{"get":{"summary":"Agent Skills Index","description":"Agent Skills Discovery RFC v0.2.0. Lists the published Liminality skill so an\nagent can discover + verify it. `digest` is sha256:<hex> over the raw SKILL.md\nbytes (the spec's integrity field — NOT a bare `sha256` key). The skill itself is\nhosted on physea.ai; we advertise its absolute URL here.","operationId":"agent_skills_index__well_known_agent_skills_index_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/router/answer":{"post":{"summary":"Router Answer","description":"Run the ROUTER on a question and return a typed answer + classification +\nrun_id. If callback_url is set, POST the result back to it (outbound).\n(Relocated from POST /answer — C2 gives /answer to the renamed /solve\nsynthesis semantics; this classify→frame→typed-output pipeline keeps its\nown address.)","operationId":"router_answer_router_answer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnswerRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runs/{run_id}":{"get":{"summary":"Get Run","description":"Fetch a legacy run or Dispatch receipt by id — caller-owned only.\nAnother customer's id returns the same 404 as a nonexistent id, so guessing\ncannot confirm that a record exists. The admin/owner sees every safe receipt.","operationId":"get_run_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runs":{"get":{"summary":"List Runs","description":"Recent caller-owned runs and Dispatch receipts on the customer plane.\nLegacy rows without an owner stamp stay invisible to customer keys; the\nadmin/owner plane sees every safe receipt plus its full legacy store.\nGate refusals (keyless/invalid-key hits, mostly bots on /mcp) are audit\nrows, not work: the owner feed omits them unless ``?refusals=1``.","operationId":"list_runs_runs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"refusals","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Refusals"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Runs Start","operationId":"runs_start_runs_post","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"}}}}}}},"/owner/rules":{"get":{"summary":"Owner Rules","description":"OWNER plane — list the caller's rules + any same-severity conflicts (flagged,\nnever auto-resolved). Two-planes isolated: only the resolved caller's rules.\nLAZY + EMPTY-SAFE: rules module/store absent => {rules:[]}, never a 500.","operationId":"owner_rules_owner_rules_get","parameters":[{"name":"caller","in":"query","required":false,"schema":{"type":"string","default":"","title":"Caller"}},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Owner Create Rule","description":"OWNER plane — declare a rule. statement is canonical verbatim user text; a\nrule without a machine_check carries check_method 'model-judgment-v1' (honest:\nenforced by model judgment, never silently assumed).","operationId":"owner_create_rule_owner_rules_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/rules/{rule_id}":{"delete":{"summary":"Owner Delete Rule","description":"OWNER plane — soft-delete (deactivate) one of the caller's rules. Only the\nowning caller may; returns 404 if no such active rule for this caller.","operationId":"owner_delete_rule_owner_rules__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","title":"Rule Id"}},{"name":"caller","in":"query","required":false,"schema":{"type":"string","default":"","title":"Caller"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/context":{"get":{"summary":"Client Context","description":"The keyed caller's OWN context profile — the customer twin of the owner\n/context (which stays admin-only: it takes caller-from-param). IDOR-safe:\nthe caller is bound from the request key (_client_caller), any client-sent\nid is ignored. Key-gated via metering.AUTH_PATHS, no quota burn. This is\nwhat the app's Context tab renders (/ws/my/context through the app proxy).","operationId":"client_context_my_context_get","parameters":[{"name":"subject","in":"query","required":false,"schema":{"type":"string","default":"","title":"Subject"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context":{"get":{"summary":"Get Caller Context","description":"The caller's CONTEXT profile: stored facts (identity, assets) joined with the\nDERIVED views (connections, flows_created, works_for_me). Two-planes isolated.\nLAZY + EMPTY-SAFE: module/store absent => an empty profile, never a 500.\n\nWith ?subject=<s>, returns only that subject's items plus a roadmap of executed steps.\nSubjects are derived from asset 'kind' fields.","operationId":"get_caller_context_context_get","parameters":[{"name":"caller","in":"query","required":false,"schema":{"type":"string","default":"","title":"Caller"}},{"name":"subject","in":"query","required":false,"schema":{"type":"string","default":"","title":"Subject"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/preference":{"post":{"summary":"Set Caller Preference","description":"Persist a PREFERENCE on the caller's profile — the HTTP equivalent of the MCP\nset_preference tool (the four-ops 'fill' verb that previously had no live endpoint).\nWires straight to caller_context.set_preference; IDOR-safe (identity resolved server-side\nvia _pref_caller). Returns {ok, caller, preferences}.","operationId":"set_caller_preference_context_preference_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferenceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/answer":{"post":{"summary":"Context Answer","description":"Answer one leaf for THIS caller (server-side identity, IDOR-safe like /context/preference).\nBody {leaf, value, leaf_text?, branch_id?, source_ref?}. `leaf` may be the leaf text or the\nleaf key; a key needs `leaf_text` unless a fact with that key already exists (we reuse its\ntext). Returns {ok, caller, leaf_key, fact, branched, other_branches}. 400 E_BAD_REQUEST\nwhen the leaf text cannot be established.","operationId":"context_answer_context_answer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextAnswerRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/facts":{"get":{"summary":"Context Facts List","description":"This caller's PRIVATE facts (the answered leaves), main branch first per leaf.","operationId":"context_facts_list_context_facts_get","parameters":[{"name":"caller","in":"query","required":false,"schema":{"type":"string","default":"","title":"Caller"}},{"name":"entity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Entity"}},{"name":"topic","in":"query","required":false,"schema":{"type":"string","default":"","title":"Topic"}},{"name":"tag","in":"query","required":false,"schema":{"type":"string","default":"","title":"Tag"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Context Facts Delete","description":"Per-caller delete-all: unlinks the encrypted facts file AND the encrypted index file.","operationId":"context_facts_delete_context_facts_delete","parameters":[{"name":"caller","in":"query","required":false,"schema":{"type":"string","default":"","title":"Caller"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthetic-customers/status":{"get":{"summary":"Synthetic Customers Status","operationId":"synthetic_customers_status_synthetic_customers_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/synthetic-customers/checkout":{"post":{"summary":"Synthetic Customers Checkout","operationId":"synthetic_customers_checkout_synthetic_customers_checkout_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthetic-customers/fulfill":{"get":{"summary":"Synthetic Customers Fulfill","operationId":"synthetic_customers_fulfill_synthetic_customers_fulfill_get","parameters":[{"name":"session_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hooks/stripe":{"post":{"summary":"Synthetic Customers Stripe Webhook","operationId":"synthetic_customers_stripe_webhook_hooks_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/synthetic-customers/studies/{study_id}/report":{"get":{"summary":"Synthetic Customers Report","operationId":"synthetic_customers_report_synthetic_customers_studies__study_id__report_get","parameters":[{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthetic-customers/studies/{study_id}/report.pdf":{"get":{"summary":"Synthetic Customers Report Pdf","operationId":"synthetic_customers_report_pdf_synthetic_customers_studies__study_id__report_pdf_get","parameters":[{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synth-report/{token}.pdf":{"get":{"summary":"Synthetic Customers Shared Report Pdf","operationId":"synthetic_customers_shared_report_pdf_synth_report__token__pdf_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synth-report/{token}":{"get":{"summary":"Synthetic Customers Shared Report","operationId":"synthetic_customers_shared_report_synth_report__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthetic-customers/studies/{study_id}/rerun":{"post":{"summary":"Synthetic Customers Rerun","operationId":"synthetic_customers_rerun_synthetic_customers_studies__study_id__rerun_post","parameters":[{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthetic-customers/personas":{"get":{"summary":"Synthetic Customers Personas","operationId":"synthetic_customers_personas_synthetic_customers_personas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/synthetic-customers/studies":{"get":{"summary":"Synthetic Customers List","operationId":"synthetic_customers_list_synthetic_customers_studies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Synthetic Customers Create","operationId":"synthetic_customers_create_synthetic_customers_studies_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthetic-customers/studies/{study_id}":{"get":{"summary":"Synthetic Customers Detail","operationId":"synthetic_customers_detail_synthetic_customers_studies__study_id__get","parameters":[{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthetic-customers/studies/{study_id}/annotations":{"post":{"summary":"Synthetic Customers Annotate","operationId":"synthetic_customers_annotate_synthetic_customers_studies__study_id__annotations_post","parameters":[{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}}],"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"}}}}}}},"/synthetic-customers/studies/{study_id}/run":{"post":{"summary":"Synthetic Customers Run","operationId":"synthetic_customers_run_synthetic_customers_studies__study_id__run_post","parameters":[{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/results/{result_id}":{"get":{"summary":"Results Detail","operationId":"results_detail_results__result_id__get","parameters":[{"name":"result_id","in":"path","required":true,"schema":{"type":"string","title":"Result Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/results/{result_id}/export":{"get":{"summary":"Results Export","operationId":"results_export_results__result_id__export_get","parameters":[{"name":"result_id","in":"path","required":true,"schema":{"type":"string","title":"Result Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"json","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/work/read":{"get":{"summary":"Work Read","operationId":"work_read_v1_work_read_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/work/trace":{"get":{"summary":"Work Trace","operationId":"work_trace_v1_work_trace_get","parameters":[{"name":"run_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"}},{"name":"task_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/work/retain":{"post":{"summary":"Work Retain","operationId":"work_retain_v1_work_retain_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"}}}}}}},"/v1/work/share":{"post":{"summary":"Work Share","operationId":"work_share_v1_work_share_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"}}}}}}},"/guardrails":{"get":{"summary":"Guardrails Get","operationId":"guardrails_get_guardrails_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"summary":"Guardrails Put","operationId":"guardrails_put_guardrails_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guardrails/rollback":{"post":{"summary":"Guardrails Rollback","operationId":"guardrails_rollback_guardrails_rollback_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guardrails/check":{"post":{"summary":"Guardrails Check","operationId":"guardrails_check_guardrails_check_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/build/blueprints":{"get":{"summary":"Build Blueprint List","operationId":"build_blueprint_list_build_blueprints_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Build Blueprint Create","operationId":"build_blueprint_create_build_blueprints_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/build/blueprints/{blueprint_id}":{"get":{"summary":"Build Blueprint Get","operationId":"build_blueprint_get_build_blueprints__blueprint_id__get","parameters":[{"name":"blueprint_id","in":"path","required":true,"schema":{"type":"string","title":"Blueprint Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/build/instances":{"get":{"summary":"Build Instance List","operationId":"build_instance_list_build_instances_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Build Instance Create","operationId":"build_instance_create_build_instances_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/build/instances/{instance_id}":{"get":{"summary":"Build Instance Get","operationId":"build_instance_get_build_instances__instance_id__get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/build/instances/{instance_id}/run":{"post":{"summary":"Build Instance Run","operationId":"build_instance_run_build_instances__instance_id__run_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","title":"Instance Id"}}],"requestBody":{"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"}}}}}}},"/build/runs/{run_id}":{"get":{"summary":"Build Run Get","operationId":"build_run_get_build_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/diagnose":{"post":{"summary":"Diagnose Post","operationId":"diagnose_post_diagnose_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/diagnose/{diag_id}":{"get":{"summary":"Diagnose Get","operationId":"diagnose_get_diagnose__diag_id__get","parameters":[{"name":"diag_id","in":"path","required":true,"schema":{"type":"string","title":"Diag Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/memory/config":{"get":{"summary":"Memory Config Get","operationId":"memory_config_get_memory_config_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"user","title":"Scope"}},{"name":"task_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Task Id"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Memory Config Put","operationId":"memory_config_put_memory_config_put","requestBody":{"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"}}}}}}},"/memory/pins":{"get":{"summary":"Memory Pins Get","operationId":"memory_pins_get_memory_pins_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Memory Pins Post","operationId":"memory_pins_post_memory_pins_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/memory/items":{"get":{"summary":"Memory Items Get","operationId":"memory_items_get_memory_items_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Memory Items Post","operationId":"memory_items_post_memory_items_post","requestBody":{"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"}}}}}}},"/memory/items/{item_id}":{"get":{"summary":"Memory Item Get","operationId":"memory_item_get_memory_items__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"}}}}}},"patch":{"summary":"Memory Item Patch","operationId":"memory_item_patch_memory_items__item_id__patch","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"requestBody":{"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"}}}}}},"delete":{"summary":"Memory Item Delete","operationId":"memory_item_delete_memory_items__item_id__delete","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"}}}}}}},"/memory/sources":{"get":{"summary":"Memory Sources Get","operationId":"memory_sources_get_memory_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/memory/block":{"get":{"summary":"Memory Block Get","operationId":"memory_block_get_memory_block_get","parameters":[{"name":"question","in":"query","required":false,"schema":{"type":"string","default":"","title":"Question"}},{"name":"task_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Task Id"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/memory/continuity/capture":{"post":{"summary":"Memory Capture","operationId":"memory_capture_memory_continuity_capture_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/memory/continuity/resume":{"post":{"summary":"Memory Resume","operationId":"memory_resume_memory_continuity_resume_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/settings/effective":{"get":{"summary":"Settings Effective","description":"The Settings page's single read: effective guardrail policy (with enforcement_kind\nper control, locks, version, audit) and the effective memory configuration + pins.","operationId":"settings_effective_settings_effective_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/state":{"get":{"summary":"State List","operationId":"state_list_v1_state_get","parameters":[{"name":"task_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Id"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"State Create","operationId":"state_create_v1_state_post","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"}}}}}}},"/v1/state/{entity_id}":{"get":{"summary":"State Read","operationId":"state_read_v1_state__entity_id__get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","title":"Entity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"State Edit","operationId":"state_edit_v1_state__entity_id__patch","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","title":"Entity 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"}}}}}}},"/v1/systems/physea-ops":{"get":{"summary":"Physea Ops Topology","operationId":"physea_ops_topology_v1_systems_physea_ops_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/systems/physea-ops/live":{"get":{"summary":"Physea Ops Live","operationId":"physea_ops_live_v1_systems_physea_ops_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/systems/physea-ops/bindings":{"put":{"summary":"Physea Ops Bindings","operationId":"physea_ops_bindings_v1_systems_physea_ops_bindings_put","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/systems/ai-build":{"post":{"summary":"Systems Ai Build","operationId":"systems_ai_build_v1_systems_ai_build_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/systems":{"get":{"summary":"Systems List","operationId":"systems_list_v1_systems_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Systems Create","operationId":"systems_create_v1_systems_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/systems/{system_id}":{"get":{"summary":"Systems Get","operationId":"systems_get_v1_systems__system_id__get","parameters":[{"name":"system_id","in":"path","required":true,"schema":{"type":"string","title":"System Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Systems Revise","operationId":"systems_revise_v1_systems__system_id__put","parameters":[{"name":"system_id","in":"path","required":true,"schema":{"type":"string","title":"System Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/systems/{system_id}/validate":{"post":{"summary":"Systems Validate","operationId":"systems_validate_v1_systems__system_id__validate_post","parameters":[{"name":"system_id","in":"path","required":true,"schema":{"type":"string","title":"System Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/systems/{system_id}/activate":{"post":{"summary":"Systems Activate","operationId":"systems_activate_v1_systems__system_id__activate_post","parameters":[{"name":"system_id","in":"path","required":true,"schema":{"type":"string","title":"System Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/systems/{system_id}/pause":{"post":{"summary":"Systems Pause","operationId":"systems_pause_v1_systems__system_id__pause_post","parameters":[{"name":"system_id","in":"path","required":true,"schema":{"type":"string","title":"System Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/systems/{system_id}/events":{"post":{"summary":"Systems Send Event","operationId":"systems_send_event_v1_systems__system_id__events_post","parameters":[{"name":"system_id","in":"path","required":true,"schema":{"type":"string","title":"System Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/systems/{system_id}/observations":{"get":{"summary":"Systems Observations","operationId":"systems_observations_v1_systems__system_id__observations_get","parameters":[{"name":"system_id","in":"path","required":true,"schema":{"type":"string","title":"System Id"}},{"name":"event_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Event Id"}},{"name":"since","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Since"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks":{"get":{"summary":"Tasks List","operationId":"tasks_list_tasks_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"","title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Tasks Create","operationId":"tasks_create_tasks_post","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"}}}}}}},"/tasks/{task_id}":{"get":{"summary":"Tasks Get","operationId":"tasks_get_tasks__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/versions":{"get":{"summary":"Tasks Versions","operationId":"tasks_versions_tasks__task_id__versions_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"version","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Tasks New Version","operationId":"tasks_new_version_tasks__task_id__versions_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"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"}}}}}}},"/tasks/{task_id}/proposals/{index}/accept":{"post":{"summary":"Tasks Accept Proposal","operationId":"tasks_accept_proposal_tasks__task_id__proposals__index__accept_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}}],"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"}}}}}}},"/tasks/{task_id}/proposals/{index}/reject":{"post":{"summary":"Tasks Reject Proposal","operationId":"tasks_reject_proposal_tasks__task_id__proposals__index__reject_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/graph":{"get":{"summary":"Tasks Graph","operationId":"tasks_graph_tasks__task_id__graph_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/methods":{"post":{"summary":"Tasks Append Method","operationId":"tasks_append_method_tasks__task_id__methods_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"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"}}}}}}},"/tasks/{task_id}/workbench":{"get":{"summary":"Tasks Workbench","operationId":"tasks_workbench_tasks__task_id__workbench_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/workbench/actions":{"post":{"summary":"Tasks Workbench Action","operationId":"tasks_workbench_action_tasks__task_id__workbench_actions_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"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"}}}}}}},"/tasks/{task_id}/evidence":{"post":{"summary":"Tasks Append Evidence","operationId":"tasks_append_evidence_tasks__task_id__evidence_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"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"}}}}}}},"/methods/{algo_id}":{"post":{"summary":"Methods Run","operationId":"methods_run_methods__algo_id__post","parameters":[{"name":"algo_id","in":"path","required":true,"schema":{"type":"string","title":"Algo Id"}}],"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"}}}}}}},"/tasks/{task_id}/events":{"get":{"summary":"Task Events","operationId":"task_events_tasks__task_id__events_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"Last-Event-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last-Event-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspace/state":{"get":{"summary":"Workspace State","operationId":"workspace_state_workspace_state_get","parameters":[{"name":"task_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/shared-work":{"get":{"summary":"List Work","operationId":"list_work_ws_shared_work_get","parameters":[{"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"}}}}}},"post":{"summary":"Create Work","operationId":"create_work_ws_shared_work_post","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"}}}}}}},"/ws/shared-work/{object_id}":{"get":{"summary":"Get Work","operationId":"get_work_ws_shared_work__object_id__get","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","title":"Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/shared-work/{object_id}/versions":{"get":{"summary":"Get Versions","operationId":"get_versions_ws_shared_work__object_id__versions_get","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","title":"Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Update Work","operationId":"update_work_ws_shared_work__object_id__versions_post","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","title":"Object 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"}}}}}}},"/ws/documents":{"get":{"summary":"Listing","operationId":"listing_ws_documents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Upload","operationId":"upload_ws_documents_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"}}}}}}},"/ws/documents/{document_id}":{"get":{"summary":"Read","operationId":"read_ws_documents__document_id__get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/documents/{document_id}/original":{"get":{"summary":"Original","operationId":"original_ws_documents__document_id__original_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/documents/{document_id}/compact":{"post":{"summary":"Summarize","operationId":"summarize_ws_documents__document_id__compact_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document 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"}}}}}}},"/ws/documents/{document_id}/expire":{"post":{"summary":"Expire Now","operationId":"expire_now_ws_documents__document_id__expire_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document 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"}}}}}}},"/ws/continuity":{"get":{"summary":"History","operationId":"history_ws_continuity_get","parameters":[{"name":"task_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/continuity/checkpoints":{"post":{"summary":"Create Checkpoint","operationId":"create_checkpoint_ws_continuity_checkpoints_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"}}}}}}},"/ws/continuity/sessions":{"post":{"summary":"Receive Context","operationId":"receive_context_ws_continuity_sessions_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"}}}}}}},"/ws/continuity/checkpoints/{checkpoint_id}/export":{"get":{"summary":"Export Checkpoint","operationId":"export_checkpoint_ws_continuity_checkpoints__checkpoint_id__export_get","parameters":[{"name":"checkpoint_id","in":"path","required":true,"schema":{"type":"string","title":"Checkpoint Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/recovery":{"get":{"summary":"Recovery List","operationId":"recovery_list_recovery_get","parameters":[{"name":"task_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Task Id"}},{"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"}}}}}},"post":{"summary":"Recovery Open","operationId":"recovery_open_recovery_post","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"}}}}}}},"/recovery/{case_id}":{"get":{"summary":"Recovery Get","operationId":"recovery_get_recovery__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/recovery/{case_id}/candidates":{"get":{"summary":"Recovery Candidates","operationId":"recovery_candidates_recovery__case_id__candidates_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Recovery Add Candidate","operationId":"recovery_add_candidate_recovery__case_id__candidates_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"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"}}}}}}},"/recovery/{case_id}/choose":{"post":{"summary":"Recovery Choose","operationId":"recovery_choose_recovery__case_id__choose_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"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"}}}}}}},"/recovery/{case_id}/retry":{"post":{"summary":"Recovery Retry","operationId":"recovery_retry_recovery__case_id__retry_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"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"}}}}}}},"/recovery/{case_id}/verify":{"post":{"summary":"Recovery Verify","operationId":"recovery_verify_recovery__case_id__verify_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"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"}}}}}}},"/runs/lifecycle/list":{"get":{"summary":"Runs List","operationId":"runs_list_runs_lifecycle_list_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"include_recovery","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Recovery"}},{"name":"task_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runs/lifecycle/{run_id}":{"get":{"summary":"Runs Status","operationId":"runs_status_runs_lifecycle__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"include_recovery","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Recovery"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runs/lifecycle/{run_id}/pause":{"post":{"summary":"Runs Pause","operationId":"runs_pause_runs_lifecycle__run_id__pause_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runs/lifecycle/{run_id}/resume":{"post":{"summary":"Runs Resume","operationId":"runs_resume_runs_lifecycle__run_id__resume_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runs/lifecycle/{run_id}/cancel":{"post":{"summary":"Runs Cancel","operationId":"runs_cancel_runs_lifecycle__run_id__cancel_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"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"}}}}}}},"/runs/lifecycle/{run_id}/reconcile":{"post":{"summary":"Runs Reconcile","operationId":"runs_reconcile_runs_lifecycle__run_id__reconcile_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runs/lifecycle/{run_id}/attempt":{"post":{"summary":"Runs Attempt","operationId":"runs_attempt_runs_lifecycle__run_id__attempt_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runs/lifecycle/{run_id}/execute":{"post":{"summary":"Runs Execute","operationId":"runs_execute_runs_lifecycle__run_id__execute_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runs/lifecycle/{run_id}/outcome":{"post":{"summary":"Runs Outcome","operationId":"runs_outcome_runs_lifecycle__run_id__outcome_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"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"}}}}}}},"/runs/{run_id}/saved-answer":{"get":{"summary":"Runs Saved Answer","operationId":"runs_saved_answer_runs__run_id__saved_answer_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runs/{run_id}/continue":{"post":{"summary":"Runs Continue","operationId":"runs_continue_runs__run_id__continue_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/grants":{"post":{"summary":"Grants Create","operationId":"grants_create_tasks__task_id__grants_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"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"}}}}}},"get":{"summary":"Grants List","operationId":"grants_list_tasks__task_id__grants_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/grants/{approval_id}/revoke":{"post":{"summary":"Grants Revoke","operationId":"grants_revoke_grants__approval_id__revoke_post","parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","title":"Approval Id"}}],"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"}}}}}}},"/ws/learning/scopes":{"get":{"summary":"Ws Learning Scopes","description":"AT32: learning scopes + calibration for the calling key (customer tier, /ws/ gate).","operationId":"ws_learning_scopes_ws_learning_scopes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/me":{"get":{"summary":"Client Me","description":"The tenant's own workspace, ALLOWLISTED: identity, assets, connections,\nand their library as plain titles (no endpoint/leaf/route_key). Key-bound,\nempty-safe, never a 500.","operationId":"client_me_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/chart":{"post":{"summary":"Client Chart","description":"'Write what you want -> the course is charted.' Runs the customer front\ndoor as the key-bound caller, then returns an ALLOWLISTED envelope — only\nthe objective, the logically-derived steps, where it lands, what needs\nconnecting, the trust basis, and the value. Mechanism fields\n(classification / causal / your_context / nonEmpiricalGate / splitForMixed)\nare never surfaced.","operationId":"client_chart_chart_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/artifacts":{"get":{"summary":"Client List Artifacts","description":"The caller's workspace library: {mine, company}. mine = everything this\nseat saved; company = everything shared across this seat's org. Key-bound.","operationId":"client_list_artifacts_artifacts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Client Save Artifact","description":"Save a charted course to the workspace. scope 'company' shares it with\nevery seat in the caller's org; anything else stays private. owner + org are\nstamped from the KEY, never the body — a client can't write into another\ncompany or forge an org.","operationId":"client_save_artifact_artifacts_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/artifacts/{artifact_id}/scope":{"post":{"summary":"Client Set Artifact Scope","description":"U33 Publish: share a saved flow with the caller's company, or make it private again.\nOwner-only (stamped from the key); another seat's id is a 404. No public scope.","operationId":"client_set_artifact_scope_artifacts__artifact_id__scope_post","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}}],"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"}}}}}}},"/workspace/import":{"post":{"summary":"Client Import Workspace","description":"Persist one Library item as an actionable caller-owned Workspace item.","operationId":"client_import_workspace_workspace_import_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspace/imports":{"get":{"summary":"Client List Workspace Imports","description":"List only the authenticated caller's durable Workspace imports.","operationId":"client_list_workspace_imports_workspace_imports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/library":{"get":{"summary":"Client Library","description":"The Library door's \"Made\" list. The SPA (static/app/src/dispatch.jsx) has always\nfetched this path — it existed only on the motherboard front door (:8794), so on\nthe plane that actually serves the console the door read an empty shelf and said\nnothing was wrong. Measured 2026-08-19 on staging: 404 on BOTH planes.\n\nPlane-aware ON PURPOSE, because the shelf is one store shared by every caller and\neach record carries the question it was made from. 268 of the 451 records in the\nlive store are stamped with the caller who caused them — `anon-w…` among them, a\nmember of the public using the free door — and the other 183 carry no stamp at all,\nwhich makes their provenance unproven rather than ours. One tenant reading another\ntenant's question is the one thing this door must never do. So:\n  owner/local plane -> the whole instance library (the operator's own machine; the\n    same content /owner/library already returns keyless here).\n  public plane, signed in -> only the rows stamped with THIS caller, so a tenant's\n    own solved routes land where the door says they will and nobody else's do. An\n    unstamped row belongs to no one provable and is therefore shown to no one.\n  public plane, nobody signed in -> empty, and `scope` says which kind of empty.\n\n`scope` is the field that keeps this honest: the door can tell \"nothing made yet\"\nfrom \"not shared here\" from \"could not read the shelf\" (the last one being the\n`error` branch, mirroring the front door's contract — never a silent empty shelf).","operationId":"client_library_library_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/capability-catalog":{"get":{"summary":"Client Capability Catalog","description":"Browser adapter for the public MCP ``catalog(action='search')`` data.\n\nThe same validated capability records and deterministic search are used, but\nprovenance hashes and engine-only scoring prose stay server-side. The route is\ncaller-keyed on the sell plane and never burns a solve.","operationId":"client_capability_catalog_capability_catalog_get","parameters":[{"name":"objective","in":"query","required":false,"schema":{"type":"string","default":"","title":"Objective"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/resources":{"get":{"summary":"Client Resources","description":"What to connect first. The SPA's \"Start here\" panel reads `load_map` from this\npath; it too existed only on the motherboard front door, so the panel never once\nrendered on either plane (it hides itself when the list is empty, which is why a\n404 here looked like nothing at all).\n\nAggregate ONLY — connector name and how many waiting steps it would unblock. The\nbacklog rows themselves carry a `query` string, so they stay server-side and only\nthe count crosses the wire. Missing file -> an empty map plus the path we looked\nfor, never a 500 and never a bare empty list with no reason attached.","operationId":"client_resources_resources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/connect":{"get":{"summary":"Client Connect","description":"Return the catalog, or a caller-scoped sign-in URL for one toolkit.","operationId":"client_connect_connect_get","parameters":[{"name":"toolkit","in":"query","required":false,"schema":{"type":"string","default":"","title":"Toolkit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/traces":{"get":{"summary":"Client Traces","description":"The caller's OWN run traces — the step-chain checkability view (DISPATCH-\nDECISION row 4). Rows were allowlist-projected at WRITE time, so this is a\npure read of already-safe data. Key-bound and empty-safe; the same receipts\nare merged into the customer /runs list for ID verification.","operationId":"client_traces_traces_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"}}}}}}},"/map":{"get":{"summary":"Client Map","description":"The caller's OWN concept/algorithm map — the Workspace canvas.\n\nBuilt from ONLY this caller's data, through the SAME two key-bound stores the\nrest of the client plane reads: org_library.list_for (their saved algorithms +\ntheir org's company-shared ones) and dispatch_runs.list_for (their own run\ntraces). No owner-plane source is touched — /owner/map is the internal concept\nmap and must never reach a customer.\n\nEnvelope mirrors the cockpit's flat typed graph so one renderer serves both:\n  {caller, nodes:[{id,label,kind,parent,scope,runs,steps,ts}],\n   edges:[{from,to,type,meta_type}], counts:{...}}\nkind: \"algorithm\" (a saved artifact) | an imported Library kind | \"step\"\n(a step inside one) | \"run\".\nmeta_type: \"abstraction\" (contains) | \"causal\" (step order) | \"associative\"\n(a run that matches a saved algorithm's title).\nKey-bound, allowlisted, empty-safe — an empty workspace returns empty lists,\nnever a stub.","operationId":"client_map_map_get","parameters":[{"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"}}}}}}},"/ws/shared-work/library-visibility":{"post":{"summary":"Visibility","operationId":"visibility_ws_shared_work_library_visibility_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"}}}}}}},"/ws/relations":{"post":{"summary":"Revise","operationId":"revise_ws_relations_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"}}}}}}},"/usage":{"get":{"summary":"Client Usage","description":"The tenant KPI board: plan + this month's runs/saves against caps + the\nONE honest savings number (savings.caller_rollup — replay-only headline, the\nstructure-delivered estimate kept separate and labelled). ALLOWLISTED; every\nfigure comes from a real meter, nothing invented. Key-bound, never a 500.","operationId":"client_usage_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/keys":{"get":{"summary":"Client Keys","description":"The caller's org's issued keys — masked to last-4 (the full secret shows\nexactly once, at mint). Self-serve key table per DISPATCH-DECISION row 7.","operationId":"client_keys_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Client Mint Key","description":"Mint a sibling seat key WITHIN the caller's own plan + org (never a plan\nupgrade — plan/quota are inherited from the caller's key, org is stamped\nserver-side). Capped per org so self-serve can't fan out unbounded. Returns\nthe full key ONCE; afterwards it lists masked.","operationId":"client_mint_key_keys_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keys/rotate":{"post":{"summary":"Client Rotate Key","description":"Atomically replace one mutable own-org key. The replacement secret is\nreturned once; the old secret stops authenticating before this response.","operationId":"client_rotate_key_keys_rotate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keys/revoke":{"post":{"summary":"Client Revoke Key","description":"Revoke an org key by its last-4. Own-org only, never an admin key, never\nthe caller's own seat (metering.revoke_key enforces all three).","operationId":"client_revoke_key_keys_revoke_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loops":{"get":{"summary":"Client List Loops","description":"The caller's scheduled route loops (saved route + cadence + quality gate).","operationId":"client_list_loops_loops_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Client Create Loop","description":"Turn a saved route into a scheduled automation: {title, objective, cadence,\nmin_ready}. Caller-stamped; capped per workspace; runs land in /runs with the\ngate verdict, pass or fail — never hidden.","operationId":"client_create_loop_loops_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loops/{loop_id}/toggle":{"post":{"summary":"Client Toggle Loop","operationId":"client_toggle_loop_loops__loop_id__toggle_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}}],"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"}}}}}}},"/loops/{loop_id}/delete":{"post":{"summary":"Client Delete Loop","operationId":"client_delete_loop_loops__loop_id__delete_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/artifacts/{artifact_id}/run":{"post":{"summary":"Client Bump Artifact Run","description":"Run the saved operation contract; repeat delivery reuses the same outcome.","operationId":"client_bump_artifact_run_artifacts__artifact_id__run_post","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/identity":{"post":{"summary":"Set Caller Identity","description":"Set the caller's free-text identity (\"who I am\"). Invalidates the per-caller\ncache so the next /context read re-derives.","operationId":"set_caller_identity_context_identity_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/assets":{"post":{"summary":"Register Caller Asset","description":"Register (or merge) one asset this caller has — \"an app and all the attributes\nassociated with that\". Stored fact: {name, kind, attributes, added_ts}. Invalidates\nthe cache. Two-planes: lands only on this caller's profile.","operationId":"register_caller_asset_context_assets_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/dump":{"post":{"summary":"Context Dump Paste","description":"Paste → private typed facts. Body {text (≤200k), source_ref?}. Returns\n{ok, caller, ingested, facts[], redaction{findings, redacted_count}, embed{backend, model, dims}}.","operationId":"context_dump_paste_context_dump_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextDumpRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/compress":{"post":{"summary":"Context Compress","description":"REST door for MCP `focus` (alias `compress_context`). POST /context/focus is the\ncanonical path (Jay SETTLED 2026-10-09 rename to Focus); /context/compress is kept as an\nalias on the same handler. (CONNECT request 2026-09-09: workers skip the\nMCP handshake). Same core, same caller binding (API key), same brief + fidelity +\nmetrics body. Key-required, quota-free on the sell plane (\"/context\" in AUTH_PATHS is\ncustomer-tier here — see metering._admin_required). The caller's context profile is\nenforced BEFORE the model sees the text (coded LIM-CTX-002/003 → 400; over budget →\nwithheld with a receipt on `context_receipt`, never an error).","operationId":"context_compress_context_compress_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextCompressRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/focus":{"post":{"summary":"Context Compress","description":"REST door for MCP `focus` (alias `compress_context`). POST /context/focus is the\ncanonical path (Jay SETTLED 2026-10-09 rename to Focus); /context/compress is kept as an\nalias on the same handler. (CONNECT request 2026-09-09: workers skip the\nMCP handshake). Same core, same caller binding (API key), same brief + fidelity +\nmetrics body. Key-required, quota-free on the sell plane (\"/context\" in AUTH_PATHS is\ncustomer-tier here — see metering._admin_required). The caller's context profile is\nenforced BEFORE the model sees the text (coded LIM-CTX-002/003 → 400; over budget →\nwithheld with a receipt on `context_receipt`, never an error).","operationId":"context_compress_context_focus_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextCompressRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/dump/upload":{"post":{"summary":"Context Dump Upload","description":"Upload (multipart `file`) → same ingest with source_ref=<filename>. text/markdown/json/csv\nonly, ≤2 MB, decoded utf-8 with errors='replace'. Optional form field `caller` (off-sell only).","operationId":"context_dump_upload_context_dump_upload_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/context/workspace":{"get":{"summary":"Roots","operationId":"roots_context_workspace_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Create","operationId":"create_context_workspace_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"}}}}}}},"/context/workspace/search":{"get":{"summary":"Search","operationId":"search_context_workspace_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"workspace_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Workspace Id"}},{"name":"k","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"K"}},{"name":"rerank","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Rerank"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/workspace/{workspace_id}":{"get":{"summary":"Manifest","operationId":"manifest_context_workspace__workspace_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Revoke","operationId":"revoke_context_workspace__workspace_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/workspace/{workspace_id}/sync":{"post":{"summary":"Sync","operationId":"sync_context_workspace__workspace_id__sync_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace 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"}}}}}}},"/ws/context/workspace":{"get":{"summary":"Roots","operationId":"roots_ws_context_workspace_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Create","operationId":"create_ws_context_workspace_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"}}}}}}},"/ws/context/workspace/search":{"get":{"summary":"Search","operationId":"search_ws_context_workspace_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"workspace_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Workspace Id"}},{"name":"k","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"K"}},{"name":"rerank","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Rerank"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/context/workspace/{workspace_id}":{"get":{"summary":"Manifest","operationId":"manifest_ws_context_workspace__workspace_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Revoke","operationId":"revoke_ws_context_workspace__workspace_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/context/workspace/{workspace_id}/sync":{"post":{"summary":"Sync","operationId":"sync_ws_context_workspace__workspace_id__sync_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace 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"}}}}}}},"/context/dump/search":{"get":{"summary":"Context Dump Search","description":"Search this caller's private facts and return a concise sourced answer when found.","operationId":"context_dump_search_context_dump_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"k","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"K"}},{"name":"caller","in":"query","required":false,"schema":{"type":"string","default":"","title":"Caller"}},{"name":"exact_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Exact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/facts/export":{"get":{"summary":"Context Facts Export","description":"Per-caller export of the private fact store: every fact (plaintext JSON) + the retrieval\nindex METADATA (vectors/shingles omitted — derived data).","operationId":"context_facts_export_context_facts_export_get","parameters":[{"name":"caller","in":"query","required":false,"schema":{"type":"string","default":"","title":"Caller"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/affordances":{"get":{"summary":"Caller Affordances","description":"\"What can I use this for?\" — ranked affordances for an asset (by name; pass\nkind to disambiguate). When the asset is already registered for this caller its\nstored attributes feed the definitional matrix; otherwise name+kind alone are\nused. Each row {use, score, match_method: \"affordance-v1\", route_key?}; score is a\nRANKING signal, not a probability (legend). LAZY + EMPTY-SAFE.","operationId":"caller_affordances_context_affordances_get","parameters":[{"name":"asset","in":"query","required":true,"schema":{"type":"string","title":"Asset"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"","title":"Kind"}},{"name":"caller","in":"query","required":false,"schema":{"type":"string","default":"","title":"Caller"}},{"name":"k","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"K"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/users":{"get":{"summary":"Owner Users","description":"OWNER plane (tasks #27/#30 — the 👥 Users panel): ANONYMOUS usage rollup.\n\nFolds the per-request telemetry ledger (by caller) into a list of anonymous\nusers — \"user 1\", \"user 2\", … — each with last-active, request count, and\ndistinct-question (qhash) count. The owner sees WHO is using the system + HOW\nMUCH, but the wire payload NEVER carries the raw caller-key labels (Jay: \"I\ndon't need any information saved, just user one, user two\"). Ordinals are\nstable across sessions (persisted in app/data/anon_users.json — the label is\nthe join key and stays server-side, gitignored like the other PII stores).\n\nThe local owner plane (Jay driving his own UI) is excluded by default —\ninclude_owner=1 surfaces it for debugging. LAZY + EMPTY-SAFE: a missing or\ncorrupt telemetry/store file returns an empty list, never a 500. Admin-gated\nvia the /owner/ prefix in metering.AUTH_PATHS (same as /owner/telemetry).","operationId":"owner_users_owner_users_get","parameters":[{"name":"include_owner","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Owner"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/user-activity":{"get":{"summary":"Owner User Activity","description":"OWNER plane (be-user-activity-20260624 — the per-CALLER Users view):\ndifferentiate users + LIVE users by the questions/flows they're asking.\n\nFolds app/data/run_traces.jsonl (the per-call ledger, keyed by `caller`) into\none row per caller:\n  {caller, questions:[recent texts], flows:[tool names], flow_count,\n   call_count, first_seen, last_seen, live, by_caller_savings}\nLive users sort first, then by last_seen desc; questions capped at last 10.\n`live` = last_seen within ROUTER_LIVE_WINDOW_MIN (default 15) minutes.\n\nDISTINCT from GET /owner/users (anonymous \"user 1/2\", no labels/text, per\nJay). THIS view is developer/admin-facing and DOES carry the caller key +\nquestion text — gated like every /owner/* path (metering.AUTH_PATHS prefix).\nQuestion text is present on only a SUBSET of rows (see questions_coverage);\ncounts/last-seen are exact for all. LAZY + EMPTY-SAFE: a missing/corrupt\nledger returns an empty list, never a 500.","operationId":"owner_user_activity_owner_user_activity_get","parameters":[{"name":"include_owner","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Owner"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/business-status":{"get":{"summary":"Owner Business Status","description":"OWNER plane (Live Status — be-user-activity-20260624): ONE business-status\npayload answering Jay's five questions with real current numbers + traffic:\nwho's using it (real-external vs internal/test/demo callers), what they're\ndoing (top flows/paths), what they're asking (distinct question hashes; raw\ntext only on the admin user_activity rows that legitimately carry it),\nsignups + purchases (minted keys / accounts / fulfilled Stripe sessions), and\nrevenue (local fulfillment total; live Stripe is a surfaced gap with a one-step\nconnect). COMPOSES the existing builders (telemetry.rollups, savings.rollup,\nuser_activity.users) + the net-new money layer — it does not re-implement them.\nLAZY + EMPTY-SAFE: a missing store yields zeros + a note, never a 500.\nAdmin-gated via the /owner/ prefix in metering.AUTH_PATHS.","operationId":"owner_business_status_owner_business_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/errors":{"get":{"summary":"Owner Errors","description":"OWNER plane — structured ENGINE ERROR CODES (recent failure/degraded/empty/fallback\nrows + counts by code, last `hours`). The engine emits these at the real failure sites\n(model fell back to stub / ran out of memory / never loaded, forecast neutral prior,\nresearch returned 0 fetched, a grounding pass where every leaf came back blocked) AND at\nthe door refusals (no key, unknown key, out of free calls, owner-only path) so silent\ndegrades SCREAM here instead of hiding behind an HTTP 200. LAZY + EMPTY-SAFE: no log →\nzeros + a note, never a 500. Admin-gated via the /owner/ prefix in metering.AUTH_PATHS.","operationId":"owner_errors_owner_errors_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/levers":{"get":{"summary":"Owner Levers","description":"OWNER plane — the variable registry (Levers): every lever definition + the\nclosed category taxonomy + flagged collisions. LAZY + EMPTY-SAFE.","operationId":"owner_levers_owner_levers_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/overview":{"get":{"summary":"Owner Overview","description":"OWNER plane — ONE aggregate dashboard payload: model backend · savings ·\nusers · subjects (top questions) · accuracy (honest low-N) · throughput ·\nconnected sources · library size. Empty-safe per section, never a 500.","operationId":"owner_overview_owner_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/health":{"get":{"summary":"Owner Health","description":"OWNER plane — systematic system health rollup: BROAD systems (planes, engine/GPU,\ntunnel, website) then NARROW (auto-mode timers, keep rate, library). rollup = worst-of.","operationId":"owner_health_owner_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ui-audit/reviews":{"post":{"summary":"Save Ui Audit Review","operationId":"save_ui_audit_review_ui_audit_reviews_post","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"}}}}}},"get":{"summary":"List Ui Audit Reviews","operationId":"list_ui_audit_reviews_ui_audit_reviews_get","parameters":[{"name":"run_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Run Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"string","default":"","title":"Page"}},{"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"}}}}}}},"/owner/ui-audit/reviews":{"get":{"summary":"Owner Ui Audit Reviews","operationId":"owner_ui_audit_reviews_owner_ui_audit_reviews_get","parameters":[{"name":"run_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Run Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"string","default":"","title":"Page"}},{"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"}}}}}}},"/owner/accounts":{"get":{"summary":"Owner Accounts","description":"Owner-only merged account view; no credentials or password hashes.","operationId":"owner_accounts_owner_accounts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/auto-overview":{"get":{"summary":"Owner Auto Overview","description":"OWNER plane — ONE cheap read for the \"Auto\" tab: each autonomous loop's status\n(learn-loop / autoresearch / auto-solver / execloop), the library route count,\nrecent prediction-error grades (proposer prediction vs independent verdict), and\nthe recent error-code feed. Composes the existing loop status() reads + /owner/errors\n+ the library count in-process — no new telemetry. Empty-safe per section, never a 500.","operationId":"owner_auto_overview_owner_auto_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/config":{"get":{"summary":"Owner Config","description":"OWNER plane — every editable knob resolved with real precedence\n(env > file > default). source=env means pinned by an env var (an edit is\nstored but won't take effect on that instance) — surfaced honestly.","operationId":"owner_config_owner_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Owner Config Set","description":"OWNER plane — persist knob edits to app/data/runtime_config.json. Returns\nthe post-write resolved view + which keys are still pinned by env.","operationId":"owner_config_set_owner_config_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/auto-solver/status":{"get":{"summary":"Owner Auto Solver Status","description":"OWNER plane — is the recurring auto-solver running (systemd timer), open-question\nqueue depth, last-run summary + cumulative REAL keep-rate, the current commit threshold,\nand the keep-rate caveat. Empty-safe, never a 500.","operationId":"owner_auto_solver_status_owner_auto_solver_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/auto-solver/run-once":{"post":{"summary":"Owner Auto Solver Run Once","description":"OWNER plane — run ONE pass of the auto-solver SYNCHRONOUSLY and return its real\nsummary {processed, kept, dropped, skipped, results}. `limit` caps the batch for this\npass (default = AUTO_SOLVER_BATCH). Builds each open question unsaved, gates on\nconfidence.committable, keeps only the committable ones.","operationId":"owner_auto_solver_run_once_owner_auto_solver_run_once_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoSolverRun","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/auto-solver/start":{"post":{"summary":"Owner Auto Solver Start","description":"OWNER plane — ENABLE the recurring loop. Drives `systemctl --user start\nauto-solver.timer`; falls back to an advisory runtime_config flag if systemd is\nunavailable. Response states which mechanism actually took effect.","operationId":"owner_auto_solver_start_owner_auto_solver_start_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/auto-solver/stop":{"post":{"summary":"Owner Auto Solver Stop","description":"OWNER plane — DISABLE the recurring loop. Drives `systemctl --user stop\nauto-solver.timer`; falls back to the advisory runtime_config flag if systemd is\nunavailable. Response states which mechanism actually took effect.","operationId":"owner_auto_solver_stop_owner_auto_solver_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/autoresearch/status":{"get":{"summary":"Owner Autoresearch Status","description":"OWNER plane — is the recurring autoresearch loop running (systemd timer), what seed is\nnext, last-run summary + cumulative real records/findings, and the honesty note. Empty-safe.","operationId":"owner_autoresearch_status_owner_autoresearch_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/autoresearch/run-once":{"post":{"summary":"Owner Autoresearch Run Once","description":"OWNER plane — run ONE autonomous research cycle SYNCHRONOUSLY and return its real\nsummary {seed, steps, records_written, new_questions, stopped_because, ...}. `seed`\noverrides the picked seed; `budget` overrides the bound defaults (max_steps/max_calls/\nmax_depth). Writes a world:web record per researched leaf; no-check leaves stay unscored.","operationId":"owner_autoresearch_run_once_owner_autoresearch_run_once_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoresearchRun","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/autoresearch/start":{"post":{"summary":"Owner Autoresearch Start","description":"OWNER plane — ENABLE the recurring loop. Drives `systemctl --user start\nautoresearch.timer`; falls back to an advisory runtime_config flag if systemd is\nunavailable. Response states which mechanism actually took effect.","operationId":"owner_autoresearch_start_owner_autoresearch_start_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/autoresearch/stop":{"post":{"summary":"Owner Autoresearch Stop","description":"OWNER plane — DISABLE the recurring loop. Drives `systemctl --user stop\nautoresearch.timer`; falls back to the advisory runtime_config flag if systemd is\nunavailable. Response states which mechanism actually took effect.","operationId":"owner_autoresearch_stop_owner_autoresearch_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/learnloop/status":{"get":{"summary":"Owner Learnloop Status","description":"OWNER plane — is the recurring learn loop running (systemd timer), the proposer + grader\nmodels + the honest independence rating, what seed is next, last-run summary + cumulative\nscored/unscorable counts, and the honesty note. Empty-safe, never a 500.","operationId":"owner_learnloop_status_owner_learnloop_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/learnloop/run-once":{"post":{"summary":"Owner Learnloop Run Once","description":"OWNER plane — run ONE proposer+grader learn cycle SYNCHRONOUSLY and return its real\nsummary {seed, asked, graded, scored_records, unscorable, new_questions, stopped_because}.\n`seed` overrides the picked seed; `budget` overrides the bound defaults (max_steps/\nmax_calls/max_depth/followups). Writes a grader:<model> record (independent of the\nproposer, §2) per graded question; opinion/undecidable questions stay unscorable.","operationId":"owner_learnloop_run_once_owner_learnloop_run_once_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LearnLoopRun","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/learnloop/start":{"post":{"summary":"Owner Learnloop Start","description":"OWNER plane — ENABLE the recurring loop. Drives `systemctl --user start\nlearn-loop.timer`; falls back to an advisory runtime_config flag if systemd is\nunavailable. Response states which mechanism actually took effect.","operationId":"owner_learnloop_start_owner_learnloop_start_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/learnloop/stop":{"post":{"summary":"Owner Learnloop Stop","description":"OWNER plane — DISABLE the recurring loop. Drives `systemctl --user stop\nlearn-loop.timer`; falls back to the advisory runtime_config flag if systemd is\nunavailable. Response states which mechanism actually took effect.","operationId":"owner_learnloop_stop_owner_learnloop_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/execloop/status":{"get":{"summary":"Owner Execloop Status","description":"OWNER plane — DRY-RUN status: proposed-action counts by danger_class, grounded-rate across\nruns, next seed, the deny-list/scope table, and the honesty note. Fires nothing; reports no\nverdicts (nothing ran). Empty-safe.","operationId":"owner_execloop_status_owner_execloop_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/execloop/dry-run":{"post":{"summary":"Owner Execloop Dry Run","description":"OWNER plane — run ONE DRY execute-recon cycle SYNCHRONOUSLY and return its proposal summary\n{seed, executable_leaves, proposed_actions, by_danger_class, grounded_to_executable, ...}.\nRecords WHAT IT WOULD FIRE per executable leaf into the proposed-action ledger. FIRES NOTHING\n— there is no live/start/stop route in this build.","operationId":"owner_execloop_dry_run_owner_execloop_dry_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecloopDryRun","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/tools":{"get":{"summary":"Owner Tools","description":"OWNER plane — the MCP tool surface grouped into sections, each tool with\nits enable flag (core tools floored on) + usage from the telemetry ledger.\nCross-checks the live registered tool list and flags drift.","operationId":"owner_tools_owner_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Owner Tools Set","description":"OWNER plane — enable/disable an MCP tool (the configurable exposure of the\ntool sections). Core tools cannot be disabled. Takes effect on the next call\n(fail-open + cached in mcp_server._instrument).","operationId":"owner_tools_set_owner_tools_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolToggle"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/statusbar":{"get":{"summary":"Owner Statusbar","description":"OWNER plane — the configurable status-bar widget list (the product UI's\nbottom dashboard). Owner-gated only; there is no public twin — the local\nMotherboard app reads the bar through its own admin-keyed proxy.","operationId":"owner_statusbar_owner_statusbar_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Owner Statusbar Set","description":"OWNER plane — save the status-bar widget config. Refuses a widget list\nwhose entries are not objects (a bare string here used to poison the stored\ndocument and break the live read).","operationId":"owner_statusbar_set_owner_statusbar_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusbarUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/statusbar/reset":{"post":{"summary":"Owner Statusbar Reset","description":"OWNER plane — restore the default status-bar widget list. The way back\nwhen a saved config went wrong, without resending the whole document.","operationId":"owner_statusbar_reset_owner_statusbar_reset_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/traces":{"get":{"summary":"Owner Traces","description":"OWNER plane — end-to-end run traces: the full start-to-finish compute of each\nsearch/run (every MCP tool call's input+output, grouped by question), retained so\nwe have it. Owner content is full; external callers are hashed (telemetry scope).","operationId":"owner_traces_owner_traces_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"}}}}}}},"/owner/traces/detail":{"get":{"summary":"Owner Trace Detail","description":"OWNER plane — the full retained compute for one run (every step's I/O).","operationId":"owner_trace_detail_owner_traces_detail_get","parameters":[{"name":"trace_key","in":"query","required":false,"schema":{"type":"string","default":"","title":"Trace Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/run-trace":{"get":{"summary":"Owner Run Trace","description":"OWNER plane — the STEP-TRACE view: the model's work for one run, per pipeline\nstage in execution order. Each stage shows the input it got, what the model\nproduced, the backend/model that ran it, and timing. Reshapes the same retained\nrun-trace store (no new capture); admin-gated by the /owner/ prefix. `id` is the\ntrace_key from GET /owner/traces.","operationId":"owner_run_trace_owner_run_trace_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/map":{"get":{"summary":"Owner Map","description":"OWNER plane — the multi-axis, layered conceptual map of the library:\nconcept (3 levels deep: genus → category → records), action (what the recipe\ndoes), app_service (connectors it touches), vertical/activity (the labeled\nquestion library). Additive — does not replace /directory. Pure read.","operationId":"owner_map_owner_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/map/edges":{"get":{"summary":"Owner Map Edges","description":"OWNER plane — the flat typed-edge list alone (for the 3D map to fetch edges without the\nnested trees): `edges` (abstraction + intra-record causal + associative), `candidate_edges`\n(the cross-record `composable_with` CANDIDATE layer — associative, low conf, NEVER causal\nlineage), `grounding_edges` (epistemic `grounds` from the axiom ledger). Pure read.","operationId":"owner_map_edges_owner_map_edges_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/throughput":{"get":{"summary":"Owner Throughput","description":"OWNER plane — the DIRECT end-to-end throughput of ONE flow (Jay, 2026-06-15):\ngiven a flow/recipe id (a yield-record id from /owner/library), return every section\nand variable it touches end to end — objective → inputs (IV) → decision-variables (DV)\n→ constraints → ordered steps (with backends) → produces — plus the pivot_targets a\ncaller can re-clamp to solve for a different piece. Pure read over the stored record;\nnothing fires an executor (honesty contract preserved: a FORK step is not a failure, a\ngate carries only a status). Additive; does not replace /execute or /result.","operationId":"owner_throughput_owner_throughput_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/pivot":{"post":{"summary":"Owner Pivot","description":"OWNER plane — PIVOT-SOLVE (Jay, 2026-06-15): from any flow, \"solve for any other\npiece\" by re-clamping a section/variable as the new target. This is the existing\nre-clamp made callable, NOT a new solver:\n  via=\"expand\"  → expand.expand(object, {target: to_value}) — re-clamp a Result delta\n                  (DV) to a value and re-solve the rest (the per-instance pivot).\n  via=\"execute\" → execution.execute(target) — clamp a DIFFERENT output object as the\n                  goal and re-solve its method.\nHonest about reach: a target the operators can't serve comes back matched:[]/unmatched\n(expand) or resolved:false (execute) — never a fabricated solve. Wraps the additive\noperators only; does NOT touch reduce/solve.","operationId":"owner_pivot_owner_pivot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PivotRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/metrics":{"get":{"summary":"Owner Metrics","description":"OWNER plane — per-step quality & performance metrics for the whole pipeline.\nPerformance is MEASURED (telemetry/savings); quality is EARNED from the\nverdict/run loop (null where no ground-truth yet — that gap is a finding);\neach parameter's effect is EARNED from logged observations, never asserted.\nEach metric carries its own measuring algorithm. Pure read, empty-safe.","operationId":"owner_metrics_owner_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/metrics/snapshot":{"post":{"summary":"Owner Metrics Snapshot","description":"OWNER plane — append the current measurement of every metric to the\ntimeseries (step_metrics.jsonl) so the metrics are tracked over time.","operationId":"owner_metrics_snapshot_owner_metrics_snapshot_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/metrics/history":{"get":{"summary":"Owner Metrics History","description":"OWNER plane — the recorded timeseries for one metric id (e.g. reduce.latency).","operationId":"owner_metrics_history_owner_metrics_history_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Id"}},{"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"}}}}}}},"/owner/metrics/observe":{"post":{"summary":"Owner Metrics Observe","description":"OWNER plane — log one (parameters → metric value) observation so the\nparameter→metric sensitivity is EARNED (fills the metric↔parameter gap the\nengine's own reduce_question flagged). Effects accrue from these; nothing is\nasserted up front.","operationId":"owner_metrics_observe_owner_metrics_observe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricObservation"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/owner/statusbar/live":{"get":{"summary":"Statusbar Live","description":"OWNER plane — the status-bar widget config + the live values it binds to\n(overview-derived), for the product UI's bottom dashboard. Admin-gated on the\nsell plane (it carries aggregate business metrics — savings/accuracy/users —\nthat must not be anonymous on the public tunnel); the local Motherboard app\nreads it through its admin-keyed /statusbar proxy. Only enabled widgets +\ntheir values are returned.","operationId":"statusbar_live_owner_statusbar_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/owner/free-solves":{"get":{"summary":"Owner Free Solves","description":"OWNER plane (2026-09-04 admin audit: 'Free-solve count not returned') — the\nkeyless free-solve ledger as an owner rollup. Pure read of the SAME\napp/data/free_solves.jsonl that free_solve.verdict() meters from, so the numbers\nthe Admin page shows are the numbers the gate enforces. Rows hold only\n{ts, ip(hash), status}; nothing else is retained, nothing is invented.\nMissing/corrupt ledger => zeros with ledger_read:false, never a 500.","operationId":"owner_free_solves_owner_free_solves_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccountRequest":{"properties":{"email":{"type":"string","title":"Email"},"agreement_version":{"type":"string","title":"Agreement Version","default":""},"agreement_accepted":{"type":"boolean","title":"Agreement Accepted","default":false},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"age":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"plan":{"type":"string","title":"Plan","default":"free"},"turnstile_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turnstile Token"}},"type":"object","required":["email"],"title":"AccountRequest"},"AnswerRequest":{"properties":{"question":{"type":"string","title":"Question"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"resources":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resources"},"callback_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callback Url"},"caller":{"type":"string","title":"Caller","default":""}},"type":"object","required":["question"],"title":"AnswerRequest"},"AssetRequest":{"properties":{"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind","default":""},"attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attributes"},"caller":{"type":"string","title":"Caller","default":""}},"type":"object","required":["name"],"title":"AssetRequest"},"AutoSolverRun":{"properties":{"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},"type":"object","title":"AutoSolverRun"},"AutoresearchRun":{"properties":{"seed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seed"},"budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Budget"}},"type":"object","title":"AutoresearchRun"},"BuildAlgorithmRequest":{"properties":{"goal":{"type":"string","title":"Goal"},"givens":{"type":"string","title":"Givens","default":""},"parameters":{"type":"string","title":"Parameters","default":""}},"type":"object","required":["goal"],"title":"BuildAlgorithmRequest"},"ChartRequest":{"properties":{"question":{"type":"string","title":"Question"},"max_depth":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Depth"},"follow_up_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Follow Up Of"},"context":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Context"}},"type":"object","required":["question"],"title":"ChartRequest"},"ComposeRequest":{"properties":{"questions":{"items":{},"type":"array","title":"Questions"}},"type":"object","required":["questions"],"title":"ComposeRequest"},"ConfigUpdate":{"properties":{"updates":{"additionalProperties":true,"type":"object","title":"Updates"}},"type":"object","required":["updates"],"title":"ConfigUpdate"},"ContextAnswerRequest":{"properties":{"leaf":{"type":"string","title":"Leaf"},"value":{"title":"Value"},"leaf_text":{"type":"string","title":"Leaf Text","default":""},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"source_ref":{"type":"string","title":"Source Ref","default":""},"entity":{"type":"string","title":"Entity","default":""},"topic":{"type":"string","title":"Topic","default":""},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"caller":{"type":"string","title":"Caller","default":""}},"type":"object","required":["leaf"],"title":"ContextAnswerRequest"},"ContextCompressRequest":{"properties":{"text":{"type":"string","maxLength":2000000,"title":"Text"},"task":{"type":"string","title":"Task"},"retention":{"type":"string","title":"Retention","default":"task_local"}},"type":"object","required":["text","task"],"title":"ContextCompressRequest"},"ContextDumpRequest":{"properties":{"text":{"type":"string","maxLength":200000,"title":"Text"},"source_ref":{"type":"string","title":"Source Ref","default":"paste"},"source_kind":{"type":"string","title":"Source Kind","default":"user_context"},"source_id":{"type":"string","title":"Source Id","default":""},"source_line":{"type":"integer","title":"Source Line","default":1},"caller":{"type":"string","title":"Caller","default":""}},"type":"object","required":["text"],"title":"ContextDumpRequest"},"DatasetCorrect":{"properties":{"row_key":{"title":"Row Key"},"column":{"type":"string","title":"Column"},"value":{"title":"Value"},"reason":{"type":"string","title":"Reason"},"expected_data_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Data Hash"}},"additionalProperties":false,"type":"object","required":["row_key","column","reason"],"title":"DatasetCorrect"},"DatasetImport":{"properties":{"name":{"type":"string","title":"Name"},"columns":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Columns"},"rows":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rows"},"key":{"type":"string","title":"Key"},"parent_version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Version Id"},"mode":{"type":"string","title":"Mode","default":"replace"},"scope":{"type":"string","title":"Scope","default":"private"},"source":{"type":"string","title":"Source","default":""}},"additionalProperties":false,"type":"object","required":["name","columns","rows","key"],"title":"DatasetImport"},"DecideRequest":{"properties":{"question":{"type":"string","title":"Question"},"context":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Context"},"resources":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resources"},"max_depth":{"type":"integer","title":"Max Depth","default":3},"mode":{"type":"string","enum":["auto","solve","decide","research","plan"],"title":"Mode","default":"auto"},"resolve":{"type":"boolean","title":"Resolve","default":false},"ground":{"anyOf":[{"type":"boolean"},{"type":"string"}],"title":"Ground","default":false},"allow_model":{"type":"boolean","title":"Allow Model","default":false},"flip_map":{"type":"boolean","title":"Flip Map","default":false},"weights":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Weights"}},"type":"object","required":["question"],"title":"DecideRequest"},"DefineRequest":{"properties":{"subject":{"title":"Subject"},"object":{"title":"Object"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"reference_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Ref"},"attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attributes"},"leaf":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Leaf"},"associations":{"title":"Associations"},"aliases":{"title":"Aliases"},"roles":{"title":"Roles"}},"type":"object","title":"DefineRequest","description":"Canonical DEFINE input.\n\n``object`` remains accepted as a compatibility spelling for the former\nmotherboard-local endpoint; new callers should send ``subject``."},"DelegationCreateRequest":{"properties":{"handoff_id":{"type":"string","title":"Handoff Id"},"task":{"type":"string","title":"Task"},"role":{"type":"string","title":"Role"},"owned_paths":{"items":{"type":"string"},"type":"array","title":"Owned Paths"},"read_only_inputs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Read Only Inputs"},"acceptance_criteria":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Acceptance Criteria"},"stop_conditions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop Conditions"},"tool_manifest":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tool Manifest"}},"type":"object","required":["handoff_id","task","role","owned_paths"],"title":"DelegationCreateRequest"},"DelegationLaunchRequest":{"properties":{"delegation_id":{"type":"string","title":"Delegation Id","default":""},"artifact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Id"},"approval_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approval Id"},"action":{"type":"string","enum":["inspect","continue","take_over"],"title":"Action","default":"inspect"},"idempotency_key":{"type":"string","title":"Idempotency Key","default":""}},"type":"object","title":"DelegationLaunchRequest"},"DelegationReportRequest":{"properties":{"delegation_id":{"type":"string","title":"Delegation Id"},"outcome":{"type":"string","title":"Outcome"},"changed_paths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Changed Paths"},"test_evidence":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Test Evidence"},"unresolved":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Unresolved"}},"type":"object","required":["delegation_id","outcome"],"title":"DelegationReportRequest"},"DelegationResumeRequest":{"properties":{"delegation_id":{"type":"string","title":"Delegation Id"},"artifact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Id"},"approval_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approval Id"},"action":{"type":"string","enum":["inspect","continue","take_over"],"title":"Action","default":"inspect"}},"type":"object","required":["delegation_id"],"title":"DelegationResumeRequest"},"DemoSolveRequest":{"properties":{"question":{"type":"string","title":"Question"},"mode":{"type":"string","enum":["auto","solve","decide","research","plan"],"title":"Mode","default":"auto"},"context":{"type":"string","title":"Context","default":""}},"type":"object","required":["question"],"title":"DemoSolveRequest"},"DistillRequest":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"DistillRequest"},"ExchangeRequest":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"ExchangeRequest"},"ExecloopDryRun":{"properties":{"seed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seed"},"budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Budget"}},"type":"object","title":"ExecloopDryRun"},"ExecuteRequest":{"properties":{"record_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Record Id"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"alt":{"type":"boolean","title":"Alt","default":false}},"type":"object","title":"ExecuteRequest"},"ExtractRequest":{"properties":{"record_id":{"type":"string","title":"Record Id","default":""},"object":{"type":"string","title":"Object","default":""}},"type":"object","title":"ExtractRequest"},"FormApplyRequest":{"properties":{"question":{"type":"string","title":"Question"},"fills":{"additionalProperties":true,"type":"object","title":"Fills"},"caller":{"type":"string","title":"Caller","default":""},"session_id":{"type":"string","title":"Session Id","default":""}},"type":"object","required":["question","fills"],"title":"FormApplyRequest"},"FormRequest":{"properties":{"question":{"type":"string","title":"Question"},"max_depth":{"type":"integer","title":"Max Depth","default":3},"verify_divergence":{"type":"boolean","title":"Verify Divergence","default":false},"caller":{"type":"string","title":"Caller","default":""},"session_id":{"type":"string","title":"Session Id","default":""},"first_route":{"type":"boolean","title":"First Route","default":false}},"type":"object","required":["question"],"title":"FormRequest"},"GroundRequest":{"properties":{"question":{"type":"string","title":"Question"},"max_depth":{"type":"integer","title":"Max Depth","default":3}},"type":"object","required":["question"],"title":"GroundRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HandoffCreateRequest":{"properties":{"task":{"type":"string","title":"Task"},"session_state":{"type":"string","title":"Session State"},"evidence":{"type":"string","title":"Evidence","default":""},"parent_handoff_id":{"type":"string","title":"Parent Handoff Id","default":""},"resources":{"type":"string","title":"Resources","default":""},"tool_manifest":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tool Manifest"},"subject":{"type":"string","title":"Subject","default":""},"source_sessions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Source Sessions"},"refs":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Refs"}},"type":"object","required":["task","session_state"],"title":"HandoffCreateRequest"},"HandoffResumeRequest":{"properties":{"handoff_id":{"type":"string","title":"Handoff Id","default":""},"checkpoint":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Checkpoint"},"current_artifact_hash":{"type":"string","title":"Current Artifact Hash","default":""},"detail":{"type":"string","title":"Detail","default":"lean"}},"type":"object","title":"HandoffResumeRequest"},"IdentityRequest":{"properties":{"identity":{"type":"string","title":"Identity"},"caller":{"type":"string","title":"Caller","default":""}},"type":"object","required":["identity"],"title":"IdentityRequest"},"KeyMintRequest":{"properties":{"label":{"type":"string","title":"Label"},"free_quota":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Free Quota"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan","default":"free"}},"type":"object","required":["label"],"title":"KeyMintRequest"},"LeadRequest":{"properties":{"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"vertical":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vertical"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","required":["email"],"title":"LeadRequest"},"LearnLoopRun":{"properties":{"seed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seed"},"budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Budget"}},"type":"object","title":"LearnLoopRun"},"MetricObservation":{"properties":{"metric_id":{"type":"string","title":"Metric Id"},"params":{"additionalProperties":true,"type":"object","title":"Params"},"value":{"type":"number","title":"Value"},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id","default":""}},"type":"object","required":["metric_id","params","value"],"title":"MetricObservation"},"OptimizeRequest":{"properties":{"target":{"type":"string","title":"Target"},"objective":{"type":"string","title":"Objective"},"budget":{"type":"integer","title":"Budget","default":5},"top_k":{"type":"integer","title":"Top K","default":5}},"type":"object","required":["target","objective"],"title":"OptimizeRequest"},"PivotRequest":{"properties":{"object":{"type":"string","title":"Object"},"target":{"type":"string","title":"Target"},"via":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Via","default":"expand"},"to_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Value"},"max_depth":{"type":"integer","title":"Max Depth","default":3}},"type":"object","required":["object","target"],"title":"PivotRequest"},"PreferenceRequest":{"properties":{"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value","default":""},"caller":{"type":"string","title":"Caller","default":""}},"type":"object","required":["key"],"title":"PreferenceRequest"},"ReduceRequest":{"properties":{"question":{"type":"string","title":"Question"},"max_depth":{"type":"integer","title":"Max Depth","default":3},"mode":{"type":"string","title":"Mode","default":"fast"},"fmt":{"type":"string","title":"Fmt","default":"tree"},"use_cache":{"type":"boolean","title":"Use Cache","default":true},"resolve":{"type":"boolean","title":"Resolve","default":false},"ground":{"anyOf":[{"type":"boolean"},{"type":"string"}],"title":"Ground","default":false},"allow_model":{"type":"boolean","title":"Allow Model","default":false}},"type":"object","required":["question"],"title":"ReduceRequest"},"ResultVerdict":{"properties":{"result_id":{"type":"string","title":"Result Id"},"worked":{"type":"boolean","title":"Worked"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["result_id","worked"],"title":"ResultVerdict"},"RuleCreateRequest":{"properties":{"statement":{"type":"string","title":"Statement"},"scope_type":{"type":"string","title":"Scope Type","default":"global"},"scope_key":{"type":"string","title":"Scope Key","default":""},"severity":{"type":"string","title":"Severity","default":"hard"},"caller":{"type":"string","title":"Caller","default":""},"machine_check":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Machine Check"},"expiry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiry"}},"type":"object","required":["statement"],"title":"RuleCreateRequest"},"ScenarioCompare":{"properties":{"run_ids":{"items":{"type":"string"},"type":"array","title":"Run Ids"}},"additionalProperties":false,"type":"object","required":["run_ids"],"title":"ScenarioCompare"},"ScenarioRun":{"properties":{"algorithm_version_id":{"type":"string","title":"Algorithm Version Id"},"dataset_version_id":{"type":"string","title":"Dataset Version Id"},"parameters":{"additionalProperties":true,"type":"object","title":"Parameters"},"label":{"type":"string","title":"Label","default":""}},"additionalProperties":false,"type":"object","required":["algorithm_version_id","dataset_version_id"],"title":"ScenarioRun"},"SolveRequest":{"properties":{"question":{"type":"string","title":"Question"},"task_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Id"},"context":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Context"},"resources":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resources"},"max_depth":{"type":"integer","title":"Max Depth","default":3},"mode":{"type":"string","enum":["auto","solve","decide","research","plan"],"title":"Mode","default":"auto"},"follow_up_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Follow Up Of"},"resolve":{"type":"boolean","title":"Resolve","default":false},"ground":{"anyOf":[{"type":"boolean"},{"type":"string"}],"title":"Ground","default":false},"allow_model":{"type":"boolean","title":"Allow Model","default":false}},"type":"object","required":["question"],"title":"SolveRequest"},"StatusbarUpdate":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"widgets":{"items":{},"type":"array","title":"Widgets"}},"type":"object","required":["widgets"],"title":"StatusbarUpdate"},"SwapRequest":{"properties":{"node":{"type":"string","title":"Node"},"slot":{"type":"string","title":"Slot"},"value":{"type":"string","title":"Value","default":""},"from_value":{"type":"string","title":"From Value","default":""},"max_depth":{"type":"integer","title":"Max Depth","default":3}},"type":"object","required":["node","slot"],"title":"SwapRequest"},"ToolToggle":{"properties":{"name":{"type":"string","title":"Name"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["name","enabled"],"title":"ToolToggle"},"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"},"VerdictRequest":{"properties":{"leaf":{"type":"string","title":"Leaf"},"endpoint":{"type":"string","title":"Endpoint"},"passed":{"type":"boolean","title":"Passed"},"run_id":{"type":"string","title":"Run Id"},"credibility":{"type":"number","title":"Credibility","default":1.0},"verdict_source":{"type":"string","title":"Verdict Source","default":""}},"type":"object","required":["leaf","endpoint","passed","run_id"],"title":"VerdictRequest"},"VersionCreate":{"properties":{"spec":{"additionalProperties":true,"type":"object","title":"Spec"}},"additionalProperties":false,"type":"object","required":["spec"],"title":"VersionCreate"},"VersionRevise":{"properties":{"changes":{"additionalProperties":true,"type":"object","title":"Changes"}},"additionalProperties":false,"type":"object","required":["changes"],"title":"VersionRevise"},"WorkaroundLeafRequest":{"properties":{"tree":{"additionalProperties":true,"type":"object","title":"Tree"},"leaf_id":{"type":"string","title":"Leaf Id"},"value":{"title":"Value"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"caller":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caller"}},"type":"object","required":["tree","leaf_id","value"],"title":"WorkaroundLeafRequest"},"WorkaroundRequest":{"properties":{"goal":{"type":"string","title":"Goal"},"blocked":{"type":"string","title":"Blocked"}},"type":"object","required":["goal","blocked"],"title":"WorkaroundRequest"}}}}