> ## Documentation Index
> Fetch the complete documentation index at: https://docs.truemath.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Domains

> A domain is a collection of variables and activities that models a specific area of calculation, such as a mortgage or a construction estimate.

A **domain** is a self-contained model of a calculation area. It bundles the
[variables](/concepts/variables) you calculate with and the
[activities](/concepts/activities) — the equations — that relate them. A domain is
the unit you target when you run a calculation.

A mortgage domain, for example, brings together variables like home price, down
payment, interest rate, term, and monthly payment, along with the activities that
connect them. A construction domain brings together material quantities, unit
conversions, and cost projections. The domain changes from one area to the next; the
way you work with it does not.

## What a domain contains

* **Variables** — the named values in the domain, each with a type, an optional
  default, and units. See [Variables](/concepts/variables).
* **Activities** — the equations that define how variables relate. Depending on which
  values are known, an activity can solve for different variables. See
  [Activities](/concepts/activities).

## Identity and versions

A domain is identified by a stable **UUID** — the `domain_id` you pass to the
[API](/api/calculate) — and carries a title and description. The description is written for
both people and machines; clear, precise descriptions improve natural-language and agent
results. The UUID is what you use to reference a domain.

A domain also carries a stable **key** that TrueMath assigns when the domain is created.
Where the UUID identifies a domain within the account it lives in, the key is how TrueMath
recognizes the *same* domain across accounts: when you
[copy a domain to another account](/authoring/creating-a-domain#copy-to-another-account), the
copy shares the source's key but takes its own UUID, so copying it again later updates that
copy in place rather than creating a duplicate. The key is assigned, not chosen, and it does
*not* appear in a domain's exported definition — an
[import](/authoring/creating-a-domain#export-and-import-json) overrides the domain you import
it into, which you select; it is not matched by a key in the JSON. See
[Creating a domain](/authoring/creating-a-domain#managing-a-domain).

A domain moves through a [version](/concepts/versioning) lifecycle: you edit a draft,
then publish it. Calculations always run against the published version, and only
published domains are available through the [API](/api/domains) and the
[Playground](/playground/tour).

## Where domains come from

* **The domain library** — TrueMath ships pre-built, role-based domains across several
  professional verticals. See the [Domain library](/domain-library/overview).
* **Your own domains** — author a domain from scratch, or customize a library domain to
  match your conventions and business logic. See [Authoring overview](/authoring/overview).

<Note>
  To list the published domains available to your account, use
  [`GET /v1/domains`](/api/domains).
</Note>

<Card title="Browse the domain library" icon="calculator" href="/domain-library/overview">
  See what's available out of the box.
</Card>
