Repository navigation
trooth 0.16.4
A company's Trust Profile, section by section
- New
trooth profile <domain|slug> [--section <name>[,<name>...]] [--json | --markdown], the CLI part of serializing every category of the Trust Profile (with the API and the MCP tool). It sends one request,GET https://trooth.co/api/network/profile?q=<domain>&contract=2(TROOTH_WEBoverrides the base), with the same deadline, size limit, retry, slug resolution,NO_COLORhandling and error documents ascheck, and prints every section the record carries in the page's order: overview, identity, history, funding, product, pricing, stack, security, privacy, ai, hosting, infrastructure, procurement, relationships, proof, people, documents, evidence, cards and faq (twenty on trooth.co today). Each section shows its state and who said it; each fact its value, who said it and its date when Trooth recorded one. A fact the record does not date prints "date unknown", never a date taken from the record's update time, a reading or another fact. A section the company left empty prints "not published"; one shared on request only, hidden by the company or unreadable on that load says which. Notes, groups and items are kept, and a contested fact lists every account without choosing one. - Section names are the MCP tool's, which are the record's own
profile.sections[].id. The typed facts (facts[], the only facts with dates) are joined to profile rows by section, label and value, and shown in the section their category belongs to:identityandregistrationin identity,hostingandrecoveryin hosting,pricingandpricing-add-onsin pricing,privacyandprivacy-rolesin privacy,ai-practicesin ai,securityin security. Those categories are also accepted by--section. A typed fact no row shows is added to its section, so nothing the record carries is dropped; facts that run past one page are read to the end from the same record version, or the command exits 3. The mapping is documented in the README and in bin/lib/profile.mjs. - The output says at the top, in text, JSON (
"signed": false,verify_with) and Markdown, that the profile is the company's own declared record and is not signed: Trooth signs only the witness statement for a reading it took, whichtrooth verify <domain>checks. --jsonprints{subject, query, contract, read_at, found, ..., sections: [{name, title, state, provenance, said_by, meaning, url, facts, notes}]}, described by the newschemas/profile-output.v1.schema.json; the generated TypeScript, Pydantic and Go types includeProfileOutput,ProfileRecordRef,ProfileSection,ProfileFact,ProfileAccountandProfileNote. scripts/gen-types.mjs now writes an integer literal asintin Go (it wrotestring).--markdownprints the same profile as Markdown.- Exit codes: 0 found and printed; 1 no published record, an honest absence, with the claim link when the API gives one; 2 usage (including an unknown section and
--jsonwith--markdown); 3 network or contract error; 6 withheld; 7 output not delivered.trooth profile --helplists them, and the README,trooth --helpand the source's header say the same. - New
tests/profile.test.mjsinnpm test, against a loopback server serving a live response for trooth.co saved unedited on 2026-10-09 (tests/fixtures/profile/trooth.co-2026-10-09.json): every section in order, every typed fact exactly once with its own date and no other, "not published",--sectionand its aliases,--jsonagainst the schema,--markdown, a slug, an absence with and without a claim link, a withheld record, paging and a stale page, a contested fact, a body with no profile, and exits 2 and 3. tests/schemas.test.mjs validatesprofile --jsonoutput against the schema, and tests/cli-0163.test.mjs coversprofile --help.
Install: npm install -g trooth@0.16.4 or run npx trooth@0.16.4. Published to npm with provenance from this repository.