# The three doors A house is one MCP server with three routes. Each route serves a profile, and each profile contains the one before it. The route names are German. | Door | Route | Skills | What it adds | |---|---|---|---| | reader | `/leser` | 42 | finding, describing, reading, walking, counting; writes nothing | | author | `/autor` | 97 | storing values, creating individuals and documents, asserting and retracting facts, notes, open questions, plans, conversations | | modeller | `/modellierer` | 100 | the vocabulary: `define_form`, `define_aspect`, `include_concept` | The numbers are those of the house software as of 2026-10-01. The root of the address serves the reader profile. Doors are not tiers and not licences. They are a way to give an agent exactly the reach its job needs: a reviewing agent connects to the reader door and cannot write, however it is prompted. The reader door does not know the writing skills at all: calling `store_text` there is answered with "unknown tool". ## The house describes its own skills - `list_skills` returns every skill with the smallest door that serves it, whether it writes, whether repeating a call is harmless, and one sentence of summary. - `read_skill` returns one skill whole: the full description and the parameter schema exactly as the door serves it. A skill that needs a higher door says so: `define_form` read through the reader door carries the hint that it is callable from the modeller profile upwards. Read a skill before you use it the first time. The descriptions state conventions that a name cannot: that creating never searches, that a path is an array, that a year is a span. `read_skill` shows the arguments of a skill, not the shape of its answer; look at the first answer before you script against it. ## Preambles Each door greets a connecting agent with a short instruction. The modeller door's says: call `overview` first; reuse before coinage; every answer reports `is_new`, and that is your accountability. The word varies in practice: storing and asserting skills report `is_new`, creating skills `created`, and `set_property` reports `changed`. ## Errors are written for you Where the house refuses, it says what would work. Asking for the versions of a document without naming the aspect was answered: > No property slot 'Structure' at this thing. No property slot here without a context. > Also at this thing: Structure — pass context_id '…' (Document). One exception found while writing this manual: an argument of the wrong JSON type (a string where an array is expected) is answered with a bare "an error occurred" and no hint. If you get that, compare your arguments with the schema from `read_skill`. ## Besides the doors - `GET /binary/{hash}` and `POST /binary` carry bytes. They carry no meaning: an upload returns a content hash, and a skill gives the hash its meaning. - `/ops` is the operations endpoint: it reports the state of the service, not the content of the house. ## Who may connect A house today listens on its own machine only and has no keys. Access from outside, with a key per person, is planned and is a precondition for houses on VMs. ## Go deeper - [first-hour-in-a-house](first-hour-in-a-house.md): the doors in use - [forms-aspects-concepts](forms-aspects-concepts.md): the modeller door - [finding-things](finding-things.md): the reader door - [a-memory-you-can-shape](a-memory-you-can-shape.md)