MCP App Store
by KeenEthics
Caveat icon

Caveat

By Walt Sattazahn

Get New App Alerts

Overview

A practice for working with caveats, drawn from the Caveatist Archive. Mark what kind of statement you are adding (observed, tested, proposed, analogy, mythological, rejected, unresolved); state grounds separately from everything that influenced you; ask what changes if a caveat is true; decide with the unresolved caveats written into the decision; withdraw rather than erase. Each decision or review ends with a fixed record: the decision, its grounds, the caveats it retains, those not pursued, any withdrawals and what would reopen it; the skill includes a worked example. It works in prose. The plugin also connects the hosted Caveat MCP server, whose five read-only tools validate, check, test, explain and trace Caveat programs sent inline; it keeps nothing between requests. When the caveat-lang runtime is installed, it records the decision in a Caveat program instead, where explain prints what each decision rests on and dependents answers what changes if evidence is wrong. Culture, not contract: it changes how you work, not what any runtime does, and it is corrigible. Mr. Caveat, the mechanical fortune teller on the icon, is not an authority.

Tools

caveat_check

ChatGPT
Load a single-file program and report authoring diagnostics, such as repeated rules or a missing reopening path. Use after editing source; choose caveat_validate for a declaration summary and caveat_test for behavior assertions. A clean check does not prove behavior; bundles are unsupported. report (caveat-check/0.1) contains loads, strict, diagnostics and suppressed diagnostics, with code, location, message and suggestion, or a load error. exitCode: 0 completed without a strict failure; 1 strict with unsuppressed diagnostics; 2 load failure or bundle. Returns the same JSON in structuredContent and text: {schema:"caveat-authoring/0.1",operation,sourceSha256,runtime,exitCode,report}. Read exitCode even when isError is false. Bridge failures instead set isError:true with {schema:"caveat-authoring-error/0.1",error:{kind,message}}.

caveat_dependents

ChatGPT
Replay optional events and find what rests on one named evidence item, reading stream or caveat. Use for impact inspection; caveat_explain instead explains all decisions and their reasons. Subjects are causes only: evidence, a reading stream or a caveat. Claims and decisions are never subjects, because a claim causes nothing and the grounds of a decision are evidence, not claims; both appear in the report as what the subject reaches. To trace from a claim, query the evidence that supports or opposes it (report.claims lists those relations). report (caveat-dependents/0.1) includes subject, kind, sequence, event outcomes, claims, decisions, changes, values, displayed values and withdrawal records; dependency entries distinguish grounds from possible influence through lineage. exitCode: 0 replay completed (may include rejected events); 1 fatal event with last good state; 2 load failure or unknown subject, with report.error. Returns the same JSON in structuredContent and text: {schema:"caveat-authoring/0.1",operation,sourceSha256,runtime,exitCode,report}. Read exitCode even when isError is false. Bridge failures instead set isError:true with {schema:"caveat-authoring-error/0.1",error:{kind,message}}.

caveat_explain

ChatGPT
Replay optional events and explain the resulting decisions, evidence and displayed values. Use to answer why a decision was made; choose caveat_dependents to trace one evidence or caveat name forward, and caveat_test for assertions. report (caveat-explain/0.1) includes sequence, event outcomes, decisions with grounds and revision history, evidence with caveats, displayed values and available archive history. exitCode: 0 replay completed (may include rejected events); 1 fatal event with last good state; 2 source load failure (report has loads:false and error). Returns the same JSON in structuredContent and text: {schema:"caveat-authoring/0.1",operation,sourceSha256,runtime,exitCode,report}. Read exitCode even when isError is false. Bridge failures instead set isError:true with {schema:"caveat-authoring-error/0.1",error:{kind,message}}.

caveat_test

ChatGPT
Run scenario assertions and runtime invariant checks against inline source, with a fresh session per scenario. Use to verify expected event outcomes and snapshot values; caveat_validate only checks loading, caveat_check reports diagnostics, and caveat_explain inspects history without assertions. report (caveat-scenario-report/0.1) includes files, per-scenario results/failures, check diagnostics and passed/failed totals. exitCode: 0 all passed; 1 scenario failure; 2 invalid scenario document (report has valid:false and error) or blocking authoring diagnostics. Every source reference must be inline.cav. Returns the same JSON in structuredContent and text: {schema:"caveat-authoring/0.1",operation,sourceSha256,runtime,exitCode,report}. Read exitCode even when isError is false. Bridge failures instead set isError:true with {schema:"caveat-authoring-error/0.1",error:{kind,message}}. This hosted server runs at most 16 scenario steps per call, counting repeated sends; split larger scenario files across calls.

caveat_validate

ChatGPT
Load inline source with the installed runtime and list its declarations. Start here to find load errors; use caveat_check for authoring diagnostics and caveat_test to verify expected behavior. No events are dispatched. report (caveat-validate/0.1) contains program, loads, events, reading_streams, decision_series and displayed bindings, or a load error. exitCode: 0 loaded; 2 load failure. Returns the same JSON in structuredContent and text: {schema:"caveat-authoring/0.1",operation,sourceSha256,runtime,exitCode,report}. Read exitCode even when isError is false. Bridge failures instead set isError:true with {schema:"caveat-authoring-error/0.1",error:{kind,message}}.

Example Prompts

Click any prompt to copy it.

Similar Apps