Docs
/
what you can do

Body

<!-- GENERATED by ops/tools/skill-sync — do not edit by hand. Run pnpm skills:sync. -->

<!-- GENERATED by ops/tools/skill-sync — do not edit by hand. Run pnpm skills:sync. -->

Body — what you can do

/admin/d/body · pillar apps

Explore a sourced anatomical graph in 3D — structures, typed relationships, systems, path tracing, lessons and a tutor that answers from the graph.

Fetch this, never remember it

These change per install and per release. Call for them - a list written here would be a future lie.

WhatCallWhy
which bodies this install actually hasGET /api/body/speciesthe atlas is species-agnostic and an install may have more than the two Leumas ships. Never assume "human" — and never assume its variants are male and female, because a species defines its own.
what a structure is, in full, with its sourcesGET /api/body/:species/:variant/structures/:idthis is the one call that returns parents, children, blood supply, drainage, innervation and provenance together. Assembling it from four calls gets the de-duplication wrong: the same fact reaches the graph from several directions and this endpoint merges the evidence rather than printing the phrenic nerve three times.
whether this install can DRAW a structureGET /api/body/:species/:variant/model-manifestschematic: true means the geometry is primitives at roughly the right position — not organ shape. Any surface or answer that shows it must say so. A structure absent from structures here is fully usable and simply not drawable.
the closed relationship vocabularyGET /api/body/relationsa traversal filtered on an invented type returns nothing and looks like a data gap. These are the only 64 that exist.
what this install may redistributeGET /api/body/licensesUberon and OpenStax are both CC BY — attribution is a condition, not a courtesy. The manifest also records what was deliberately NOT taken and why.

How to actually do things here

Written by hand, because the order and the traps are the part no file can derive.

Answer an anatomy question factually

  1. POST /api/body/:species/:variant/ask with { question }.
  2. Read facts — that is the graph's answer. Read sources — that is where it came from.
  3. Apply visualActions to the viewer if one is open, so what you say and what is highlighted cannot disagree.

Trap: Do NOT answer from memory when this returns answerable: true — the whole point is that the claim is traceable. When it returns answerable: false, note says why: an unresolved name, or a route the dataset does not record. Report that rather than filling the gap.

Find a structure by name

  1. GET /api/body/:species/:variant/search?q=… and read how on the top result.
  2. Use the id, never the name, for everything downstream.

Trap: how: "fuzzy" is a SUGGESTION, not a resolution — "femer" scores the same against "femur" as "ileum" does against "ilium", so no threshold can separate a helpful correction from a dangerous one. The resolver refuses to promote a fuzzy hit and so must you.

Answer "which bones are in the hand"

  1. GET /api/body/:species/:variant/structures/:id/contains?category=bone with the hand's id.
  2. Or POST /api/body/:species/:variant/ask with the question and let it resolve the container.

Trap: Never write the list down. It is derived from the graph, it differs between variants, and it changes when the dataset is refreshed. within accepts a structure, a REGION or a SYSTEM id — the hand resolves to a region, and a containment walk from a region id would return nothing if the endpoint did not handle all three.

Trace a flow — blood, air, food, urine

  1. POST /api/body/:species/:variant/path with { from, to }.
  2. Read steps for the typed hops and nodes for the route.

Trap: The default relation set is FLOW only, deliberately: including part_of would let a path claim that blood travels from the heart to the thorax. found: false means those edges are not recorded — it is never evidence that no route exists in the body.

Compare two bodies

  1. Load both variants and diff their structure sets, or call the app action compareVariants.
  2. Restrict with system to make the answer readable.

Trap: Shared anatomy keeps the SAME canonical id across variants, which is what makes a diff meaningful and a selection survive a switch. A structure missing from one side is absent from that body, not hidden in it.

Add another species

  1. Write data/species/<id>/ingest.profile.json (from an ontology) or the five dataset files by hand.
  2. Add the id to SHIPPED_SPECIES in shared/packages/body/data/species/index.js.
  3. node ops/tools/anatomy-ingest/index.mjs update uberon --species <id> then … validate.

Trap: No engine code changes, and that claim is enforced: test/cross-species.test.js loads the synthetic test-organism through the same path and asserts every surface works on it. A dataset that does not validate is NOT written — replacing biology with something unvalidated is worse than shipping the previous release.

Tabs

Every one is a real URL. A tab with its own section below carries a real job.

TabPathGroupWhat it is for
(index)---
tree---
graph---
lessons---
sources---

API

Mounted prefixes that serve this domain: /api/body

The full route table is leumas-capabilities/reference/api-routes.md.

Source .claude/skills/leumas-studio/reference/domains/body.md (no-git)markdownjson
Generated from the Leumas repository. Every page cites the file it came from.leumas.techllms.txt