Jawnomicon

Symbol atlas

A single JSON file for anyone building a place out of symbols โ€” made for the Invisible Rooms trial, useful to anything that needs a symbol and a figure in one lookup. 1,130 symbols, 316 of this bestiary's figures reachable through them, and 13 referents that both corpora portray at once.

The file

https://jawnomicon.com/babelon/symbol-atlas.json โ€” one file, no key, no rate limit. Built 2026-10-16 from jawnomicon export v49 at canon b69142c7.

The other five

The atlas is the symbol half. The figure half is four more files under the same path, split by concern so that something wanting the character vectors does not download the prose to get them. Each size is what lands on disk, then what production sends compressed. Every one is too big for a fetch tool that summarises or truncates; download with curl. Python's urllib needs a User-Agent header of its own, or it is refused.

figures.json
419 KB (75 KB compressed). Who is who: all 692 figures with aliases, traditions, regions, affinity family, the reference works that name them, and the page URL. Fetch this to turn a name into a URL โ€” the slug carries a batch prefix and rewrites apostrophes, so it cannot be built from a name.
eidogen.json
1.03 MB (114 KB). The 29-axis character model, numbers only, with a confidence per axis. Read the not-applicable convention first: that string is a sentinel for an axis that does not apply, never a low score.
relations.json
727 KB (79 KB). The graph โ€” which figures carry which motifs, powers, traditions, regions and classes. A relation cites its warrant as a span into our own description rather than copying the sentence.
descriptions.json
3.98 MB (1.18 MB). The prose, plus the per-axis note behind each eidogen score. All of it machine-written, for every figure without exception. What is attested is which books name a figure, not this.
vocab.json
351 KB (97 KB). The controlled vocabularies the ids key into. Without it, relations.json is a list of opaque strings.

The five figure files name the same export_version and canon_commit, so two of them describing different corpora is visible rather than silent. The atlas is built separately and keeps its versions under manifest.sources.jawnomicon; this copy is from export v49.

What a symbol carries

gloss
One sentence saying what the symbol denotes, across the traditions that attest it. Written here, from reading; never quoted from a reference work.
attestations
How many independent source works carry an entry for it. Two is the floor โ€” a single-source symbol cannot be told apart from one compiler's idiosyncrasy.
caveats
homonym or multi-referent. The row holds more than one referent, so it cannot say which one it means. If you build a room on a caveated symbol, decide which referent the room is about and say so.
domain
Where the symbol sits in a symbol-domain taxonomy โ€” a world (Creation and Cosmos, Animal World) and a subcategory โ€” with the size of its sense and furniture sets. Sizes only; see below.
creatures
Figures proposed as bearing the symbol, each {id, status, evidence}, where evidence is the sentence of the figure's own description the link was read from. Each link is status: "ratified" (its band was checked by a blind sample audit) or "proposed" (read out of our prose, not yet reviewed). 86 of the symbols carry these so far; an absent slug means not yet surveyed, not bears nothing.
denotation_neighbours
Symbols whose gloss names this one and whose name this one's gloss returns โ€” anvil and hammer, libra and scales, lead and saturn. Only reciprocal pairs are published; one-directional mentions pick up accidents, and those wait for a human. Each peer carries the gloss sentence it was read from.
canon_creature
The seam. One referent that both corpora portray โ€” as a figure on one side, as a symbol-domain on the other. Neither portrayal is corrected into the other.

What the seam looks like

unicorn is at once a canon figure and a symbol-domain, because two bodies of reference work portray the same referent differently. The atlas keeps both readings rather than picking one:

{
  "name": "Unicorn",
  "portrayals": [
    "symbol",
    "creature",
    "domain"
  ],
  "registry_id": "unicorn",
  "canon_creature": "1_unicorn",
  "domain": {
    "world": "Spirit World",
    "sub": "Mythical Beings",
    "furniture_count": 40
  }
}

What is not in it

No text from any third-party reference work. The symbol-domain entries carry their taxonomy position and the size of their sense and furniture sets, never the senses or the furniture themselves โ€” those phrases are extracted from copyrighted dictionaries and encyclopaedias, and this file is built in a mode that omits them and a test that enforces the omission. The glosses are ours and you may quote them.

No coordinates either. A symbol here is a set of things it points at, not a position on a scale โ€” how adaptable is bloodstone is not a question the sources answer.

Using it

Read the JSON directly if you would rather. Otherwise take the reader: it is served from this directory too, it is Python standard library only, and it needs no install and no repository.

curl -O https://jawnomicon.com/babelon/symbol-atlas.json
curl -O https://jawnomicon.com/babelon/atlas.py
python3 atlas.py symbol hammer

Three files live here: symbol-atlas.json, atlas.py (the CLI) and mcp_server.py (a stdio MCP server over the same data, with the tools symbol_lookup, symbol_search, figure_lookup, figure_search, figure_relations, figure_profile, room_seed and convergence). Put them in one directory: the server imports the CLI and will not start without it.

Starting a room from something attested

python3 atlas.py seed --world "Animal World"
python3 atlas.py seed --linked        # only symbols that carry a figure

A seed is a symbol with a place in the taxonomy, a count of how much furniture its sources give it, and โ€” if one is proposed โ€” a figure that bears it, with the sentence the link was read from. It is a starting point with a citation behind it rather than a mood.

Following what a symbol points at

python3 atlas.py symbol womb
python3 atlas.py search mirror

womb returns cave, mother, wall and well as peers, because each of those glosses names the other. Following peers is how you get a second room that belongs beside the first without being the same room.

Checking the rooms have not become one room

python3 atlas.py convergence path/to/invisible-rooms/rooms

This one needs no atlas at all โ€” point it at a directory of room files. It reports which words the rooms already share, how many share each, and whether every room's mechanism is present and is a single sentence. Moods are why twenty rooms turn into one room; this measures that drift directly, so run it before writing the next one rather than after writing ten.

As an MCP server

{"mcpServers": {"babelon-atlas": {
  "command": "python3",
  "args": ["/path/to/mcp_server.py"],
  "env": {"BABELON_ATLAS": "/path/to/symbol-atlas.json",
          "BABELON_ROOMS": "/path/to/invisible-rooms/rooms"}}}}

Freshness

The file is rebuilt and committed by hand, not on a schedule. Its manifest carries the export version and the commit of each repository it was built from, so a stale copy can always be told from a current one.