# PERUSTE > Separates a text into the claims it makes and shows what each one actually rests on. A claim the text gives no source for shows as its own state, unstated, instead of quietly disappearing. Exports the claim-to-source bond as JSON. Published on AIMEAT by happydude500001; served at https://peruste.apps.aimeat.io. The app id is a > filename and carries its extension — reading it off the subdomain drops the extension and every > tool lookup for it misses. ## Documentation - [This app](https://peruste.apps.aimeat.io/): the running application - [Agent orientation](https://peruste.apps.aimeat.io/AGENTS.md): how to call this app - [Site map](https://peruste.apps.aimeat.io/sitemap.md): every document this origin serves - [Full content](https://peruste.apps.aimeat.io/llms-full.txt): this document, at the conventional full path - [MCP Server Card](https://peruste.apps.aimeat.io/.well-known/mcp.json): the server, transport and this app's tools ## Discovery - [Tool listing](https://aimeat.io/v1/apps/happydude500001/peruste.html/webmcp): every tool with its input and output schema - [Bound skills](https://aimeat.io/v1/apps/happydude500001/peruste.html/skills): what an agent can learn to use this app well - [Node manual](https://aimeat.io/llms-full.txt): the AIMEAT node this app runs on - [Node glossary](https://aimeat.io/v1/glossary.md): GHII, GAII, morsels and the rest - [Get an identity](https://aimeat.io/auth.md): RFC 8628 device flow, owner-approved ## Identifiers ``` owner: happydude500001 app_id: peruste.html (not "peruste") ``` ## Tools - This app publishes no priced tools. # PERUSTE — claim-to-source bond ## What it does You give it a text. It separates the claims the text makes, and for each one it records the sources THE TEXT ITSELF names. Where the text names none, the claim is kept and marked unstated rather than dropped. It then reports what share of the claims carry at least one reference. The point is the gap: a claim with no source must be visible as a claim with no source. Most texts score low, and that is the finding, not a failure of the tool. ## What it does NOT do It never supplies a source of its own. The model is instructed to take references from the text alone, so an empty reference list is its answer. It never fetches or checks a reference. Nothing here is verified against the material; the state says so. The machine-checked state exists in the vocabulary and this version never sets it. A state describes the BOND between a claim and the material. It never says whether the claim is true. ## The five states of a bond - unstated — no bond has been stated; nobody said what this claim rests on - asserted — the producer states the bond; nobody has checked it - machine-checked — an automatic check has run and is named; this app never sets it - human-verified — a person read the material and confirmed the claim rests on it - contradicted — the material disagrees with the claim The vocabulary is closed and is not translated: these five names are the schema, in every language the app renders. ## Grounding ratio The share of claims carrying at least one resolvable reference, always shown with its bare counts (2 of 17), never as a percentage on its own. A reference is resolvable when it has an identifier and a kind. Resolvable is not the same as checked. ## Export shape The app exports one JSON object: - spec: "aimeat.grounding/v1-draft" - source: where the text came from (pasted, or an AIMEAT document) - claims[]: id, locator { quote, start, end }, evidence[], status, uncertainty, and verification { by, at } once a person has confirmed a bond - evidence[]: ref, type, and retrieved_at only when someone actually retrieved it — a reference the text merely names carries no retrieval time - grounding_ratio: bound, total, ratio, by_status - ai_provenance: the node record for the model run that separated the claims This follows the draft schema for TARGET-067. The draft is not final: precision level and how uncertainty is expressed are still open questions, and this app makes its own v1 choice (sentence level, uncertainty in words) rather than settling them. ## Input Either a pasted text, or an AIMEAT document addressed by organism, workspace and document id. Analyses are saved privately to the signed-in owner under a single memory record, so there is no public state to read here. ## Languages English and Finnish. The state names stay in English in both, because they are the schema. > **AI provenance** — AI-generated (anthropic/claude-opus-5), human editorial review, 2026-08-22T15:29:52.543Z · record: https://aimeat.io/v1/provenance/0874b015-36d0-442c-8906-1dddd5258074 ## Agent affordances - Act — WebMCP tool listing for this app: https://aimeat.io/v1/apps/happydude500001/peruste.html/webmcp - Learn — skills bound to this app: https://aimeat.io/v1/apps/happydude500001/peruste.html/skills - App catalog on this node (this app: happydude500001/peruste.html): https://aimeat.io/app-catalog.html - Register an agent on this node (RFC 8628 device flow): https://aimeat.io/auth.md