v4.9.1 — ftm ref model browser
ftm ref — explore the FtM model from the command line
This release adds ftm ref, an offline command group for browsing the FollowTheMoney schema and type model one question at a time. It reads the model compiled into the installed package — so it is always in sync with your version, needs no network or API key, and is handy both at a prompt and for coding agents discovering the model programmatically.
Every command prints a table on a terminal and JSON when piped or when --json is passed, so the same command serves humans and tooling:
ftm ref # model overview + the subcommand index
ftm ref schemata # every schema, with matchable/abstract flags
ftm ref schemata --matchable # only schemata you can match against
ftm ref schema Person # one schema + all inherited properties
ftm ref types # every property type
ftm ref type country # one type, including its supported values
ftm ref prop Person:nationality # one property's full definitionExamples
List the schemata you can run a match against:
$ ftm ref schemata --matchable
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ schema ┃ matchable ┃ flags ┃ extends ┃ description ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ Company │ ✓ │ │ Asset, … │ A corporation, usually … │
│ Person │ ✓ │ │ LegalEntity, │ A natural person, … │
│ │ │ │ Thing │ │
│ Vessel │ ✓ │ │ Asset, … │ A ship or boat. │
└──────────────┴───────────┴──────────┴──────────────┴───────────────────────────┘Inspect one schema — extends lists every ancestor, and the property table is the complete set of fields (own + inherited) you can set on the entity:
$ ftm ref schema Person
Person (Person)
A natural person, as opposed to a corporation of some type.
matchable: yes
extends: LegalEntity, Thing
featured: name, nationality, birthDate
required: name
property type matchable schema description
name name ✓ Thing The primary name of the entity
nationality country ✓ Person Nationality of a person
birthDate date ✓ Person Date of birth
…Look at a property by qualified name — inherited names resolve against the schema you ask about (Person:name resolves to Thing:name). JSON when piped:
$ ftm ref prop Person:nationality --json
{
"label": "Nationality",
"matchable": true,
"name": "nationality",
"qname": "Person:nationality",
"schema": "Person",
"schemata": ["Person"],
"type": "country",
"values": { "ad": "Andorra", "ae": "United Arab Emirates", … }
}Drill into a property type to see its supported values and every property that uses it:
$ ftm ref type country
country (Country)
…
matchable: yes
enum: yes
group: countries
property schema
Address:country Address
Person:nationality Person
…
ad Andorra
ae United Arab Emirates
…
281 supported value(s)Notes
- Inherited properties are included in
ref schema; stub (reverse-edge) properties are hidden unless you pass--stubs. - Unknown names produce a
Did you mean: …?suggestion and exit with a usage error. - The CLI now depends on rich for table and markdown rendering; description text authored in markdown renders with formatting on a terminal.
See the CLI reference for full details.