{"schema_version":"2.0.0","description":"Discovery doc for DreamerOS continuity: how any AI client (known or BYOLLM) folds DreamerOS anchors into its tool-use loop.","endpoints":{"chat_rest":"https://api.dreameros.app/api/v1/chat","mcp_base":"https://mcp.dreameros.app/mcp","mcp_initialize":"https://mcp.dreameros.app/mcp","actions_recall":"https://api.dreameros.app/api/v1/actions/recall","actions_remember":"https://api.dreameros.app/api/v1/actions/remember","actions_openapi":"https://api.dreameros.app/api/v1/actions/openapi.json","openai_chat_completions":"https://api.dreameros.app/api/v1/dreamweaver/v1/chat/completions","openai_models":"https://api.dreameros.app/api/v1/dreamweaver/v1/models","anthropic_messages":"https://api.dreameros.app/api/v1/dreamweaver/v1/messages"},"doors":[{"id":"mcp-streamable-http","protocol":"mcp","transport":"streamable-http","url":"https://mcp.dreameros.app/mcp","auth":"Authorization: Bearer <dros_* DreamerOS API key>","status":"supported","description":"Model Context Protocol over streamable HTTP. The door for an MCP client that lets a model choose when to call it."},{"id":"openai-chat-completions","protocol":"openai","base_url":"https://api.dreameros.app/api/v1/dreamweaver/v1","endpoints":{"chat_completions":"https://api.dreameros.app/api/v1/dreamweaver/v1/chat/completions","models":"https://api.dreameros.app/api/v1/dreamweaver/v1/models"},"model":"dreamweaver","auth":"Authorization: Bearer <dros_* DreamerOS API key>","status":"supported","description":"OpenAI-compatible inbound bridge. Point any OpenAI client or SDK at base_url and send the model id above. Every turn routes through DreamerOS by construction, because the base URL is the transport rather than a tool the model may skip."},{"id":"anthropic-messages","protocol":"anthropic","base_url":"https://api.dreameros.app/api/v1/dreamweaver/v1","endpoints":{"messages":"https://api.dreameros.app/api/v1/dreamweaver/v1/messages"},"model":"dreamweaver","auth":"Authorization: Bearer <dros_* DreamerOS API key>","status":"supported","description":"Anthropic-compatible inbound bridge. Point any Anthropic Messages client at base_url and send the model id above."},{"id":"rest-actions","protocol":"rest","base_url":"https://api.dreameros.app/api/v1/actions","openapi_url":"https://api.dreameros.app/api/v1/actions/openapi.json","auth":"Authorization: Bearer <dros_* DreamerOS API key>","status":"supported","description":"Plain REST actions for memory, recall, skills, and governed chat. Read openapi_url for the machine-readable schema of every operation and its request shape."},{"id":"mcp-legacy-sse","protocol":"mcp","transport":"sse","url":"https://mcp.dreameros.app/mcp/sse","status":"deprecated","description":"DEPRECATED, and not a way in. Measured behaviour: it answers with a keepalive comment and never sends the endpoint event an SSE client needs, so a client pointed here waits forever. It stays listed only because scanners probe it. Use the mcp-streamable-http door, or one of the base-URL doors above."}],"headers":[{"name":"X-DreamerOS-Continuity-Anchors","direction":"response","value":"integer","description":"Count of DreamerOS anchors folded into the current response context."},{"name":"X-DreamerOS-Continuity-User-Tier","direction":"response","value":"light | pro | elite | enterprise | hc","description":"DB-resolved tier for the authenticated caller (never inferred from the request body)."},{"name":"X-DreamerOS-Continuity-Discovery","direction":"response","value":"url","description":"Self-link to this discovery doc so clients can introspect the contract without prior knowledge."}],"anchor_format":{"id":"string (uuid)","content":"string","memory_type":"semantic | episodic | procedural","tags":"list[string]","created_at_iso":"string (ISO 8601 timestamp)"},"mcp_instructions_contract":"On a successful MCP initialize handshake, a client presenting a valid DreamerOS API key (dros_*) receives the user's most recent anchors serialized into the `instructions` string of the initialize response. Clients without a valid key receive a generic instructions string and no anchors. The anchor count is tier-bound.","tier_anchor_counts":{"light":3,"pro":5,"elite":10,"enterprise":10,"dreamweaver_solo":10,"dreamweaver_duo":10,"hc":20},"opt_out_header":"X-DreamerOS-Continuity-Opt-Out: 1","handoff":{"description":"Write a structured handoff at session end; read the newest one at session start. Available at every tier.","routes":{"write":"https://api.dreameros.app/api/v1/session/handoff","read_latest":"https://api.dreameros.app/api/v1/session/handoff/latest"},"mcp_tools":{"write":"dreameros_session_handoff_write","read":"dreameros_session_handoff_read"}},"canon":{"count":2,"door":"https://api.dreameros.app/api/v1/canon/system","auth":"bearer","description":"Number of canon documents that bind this continuity contract. Read them through the door with a DreamerOS API key (dros_*) in the Authorization header."}}