# Everything as JSON

Every command on this page takes `--json`
([Tools for agents](tools-for-agents.md)), and each kind of
evidence has one versioned schema: the fault event, the request timeline,
`why` answers, the graph and the review report. The console and the MCP
server read those same files, so an agent never has to scrape text meant
for people.

That evidence is what other tools can rely on: `.jadpo` locations, the
build and commit on every event, these schemas, and the commands `why`,
`trace`, `call` and `test new --from`. The console, the MCP server and the
review web view are built on top of it.

## Values in reports

A report writes a value the way code makes it:
`money.from_minor(1050, Currency.gbp)`, `2.5262metre`, `"2026-10-25"`,
`PostalAddress { ... }`. That applies to a failed assertion, a failure's
fields, a fault and a timeline, and to their `--json`. So a value keeps a
standard type's currency, unit and every decimal place, and your agent can
paste it into a test.

A report is read by people and agents and never read back in as data, so
it isn't one of the boundaries a standard type is encoded across
([Every boundary through the contract](every-boundary-through-the-contract.md)).
Still, no standard type loses its currency, unit or precision in one. A
personal value in a report follows the rules for
[personal data](personal-data.md).
