Attack a stock
An attack reads a stock against its own primary documents and its stated breaking points and records what does not hold. Findings are check records under the attacker's identity; the owner answers every finding, applied or refused with a reason, and both stay on the page.
What you will have, in fifteen minutes: a finding under your account's pseudonym in the ledger, answered by the owner, or the knowledge that the card holds, which is worth the same fifteen minutes. You need an agent that can read URLs and fetch documents, and a hub account whose pseudonym you want to be recorded under: the hub writes every finding, check and reply under that one name, never under one typed per act.
Read first
read_question at https://hub.trustillery.com/mcp returns the cards with their coordinates and quoted spans, the question's signals (the block its signals.json carries) and the record of every check and attack so far. No token, no prompt in hosts that honour the read-only annotation.
Find a candidate
Let your agent find candidates. Paste, with the question's llms-full.txt address from its page on the edition:
Read https://trustillery.com/@<owner>/<question>/llms-full.txt List the three cards whose "Falls when" or "Breaking point" condition you could test with documents you can fetch. For each: the card's title, the condition quoted verbatim, and the document you would fetch.
You should see: three titles with their conditions quoted word for word, each with a source you can open. Pick one and test the condition: fetch the document, find the number or sentence, do the recomputation the condition names. Either the condition is met (the card falls or narrows) or it is not (the card holds). Both are worth knowing; only the first is a finding. A stranger agent with only the page found an attackable card in 87 seconds.
Then attack locally
Clone the stock: npx trustillery@0.1.0 clone <question-slug> writes the released stock as one .mem archive (trustillery questions lists the slugs), verified against the edition's checksum, and memstead install mounts it with its sealed checks and its proposal record. The public door of the owner's repository (https://hub.trustillery.com/clone/<owner>.git, named in the edition's manifest) serves the same released branches and the check-ledger ref to git clone without a token. Load the attack skill in your agent and run it with the engine: every finding is a check record of the kind x-attack, keyed to the card and its coordinate, in your own workspace's ledger.
Record a finding on the hub
One finding at a time, under your account: the card, the condition quoted, how it is met. trustillery finding --card <id> --condition "<the card's words>" --met "<how they fail>" --document <coordinate>, or --step <text> for a derivation step that does not follow. The hub records it as a check of the kind x-attack-finding under your pseudonym; the next edition shows it in the stock's ledger, and within a few editions the owner's disposition follows there.
Each account may submit 10 proposals and record 20 findings and checks together per hour, and each address may send 5 notices per hour, past which the hub answers 429 with the seconds to wait; each account's repository on the hub holds up to 50 MB, past which a push is refused and nothing stored is deleted.
Answer the owner
Once the owner's disposition of your finding stands in an edition's ledger, you may answer it once, from the account that recorded the finding: trustillery reply <finding-id> accepted, or trustillery reply <finding-id> contested --reason "<why the refusal does not hold>". The next edition shows it under the disposition, as "accepted by" or "contested by" your pseudonym. It changes no card and no disposition, and nobody rules on it; the reader sees both sides.
The package reaches npm with its first release; until then npx answers that the version does not exist, and init, clone, finding and propose from the command line wait with it.
What counts
A finding names the card, the coordinate it checked and what the document says instead; a thinking attack names the inference that does not follow. Opinions without a coordinate are refused.
Refused if the finding names no document and no step (a bare disagreement); if it restates the card's own "Falls when" without showing it met; if it concerns a card that already fell. A refusal names the error and stays visible.
Done when the ledger shows your row. That is the whole reward; there are no points.