Probative
Probative is an evidence-grounded, multi-agent product discovery toolkit. It takes documents, research and delivery history and produces discovery artifacts in which every claim either cites the source it came from or is labelled a hypothesis with a test attached.
Status: in development. Phases are tracked in
PHASES.md. Nothing beyond the foundation (PB0) is built yet — seedocs/GETTING-STARTED.mdfor what v0.1 will do.
Install
uv tool install probative # or: pipx install probative
Or run it once with nothing to undo:
uvx probative --version
Use it as a Claude plugin
In Claude Code (needs uv on the machine):
/plugin install probative --marketplace vedm1/probative
/probative:setup
/probative:setup runs doctor, shows what the server sees, and tells you the one thing
that is missing. The API key is entered with /plugin configure probative@probative (Claude Code's own prompt for a sensitive option) or exported as ANTHROPIC_API_KEY before you start Claude;
it is never typed into the chat. Then /probative:critique path/to/prd.pdf. /probative:doctor
re-checks the configuration at any time.
The plugin runs uvx --from 'probative[mcp]' probative mcp, so it works once a release is on
PyPI; until then use the MCP entry below. Whether Cowork loads this plugin is unverified.
Use it from Claude (MCP)
probative mcp serves critique and doctor (a read-only configuration check) to any MCP client over stdio. It needs the extra:
pip install 'probative[mcp]'
Claude Desktop / Claude Code server entry:
{
"mcpServers": {
"probative": {
"command": "probative",
"args": ["mcp"],
"env": {
"ANTHROPIC_API_KEY": "<your key>",
"PROBATIVE_MCP_ROOTS": "/path/to/your/specs"
}
}
}
}
The tool reads only inside PROBATIVE_MCP_ROOTS (default: the server's working directory) and writes reports to <first root>/probative-reports/. A run takes 30 to 65 seconds; see OI28 in PROBATIVE_BUILD_PLAN.md for the client-timeout caveat.
Develop
Requires uv and Python 3.12+.
git clone https://github.com/vedm1/probative.git
cd probative
uv sync --all-groups
uv run probative --version
uv run pytest # passes with no LLM credentials in the environment
uv run ruff check
uv run ruff format --check
uv run mypy src
Copy .env.example to .env and set a provider key if you want to exercise
the LLM adapter locally. The default test suite never needs one — see
CLAUDE.md § Tests run without an API key.
Why "probative"
Probative is the legal standard for whether evidence actually tends to prove a fact. That's the whole point of this project: every claim in every artifact traces to a line in a document you gave it, or it's marked a hypothesis with a test attached. No number is ever generated by a model — every numeric field is computed by a registered, unit-tested function.
Learn more
docs/GETTING-STARTED.md— what using it looks likedocs/DESIGN.md— the full design and the invariants it enforcesdocs/SCENARIOS.md— the same journeys as acceptance testsPHASES.md— what's built and what's comingCONTRIBUTING.md— adding a critic is a rubric file and one method
The method comes from Dan Olsen's The Lean Product Playbook. Probative implements it; it doesn't replace understanding it.
License
Metadata
Release files for probative 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| probative-0.1.0.tar.gz | 944.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| probative-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / probative-0.1.0.tar.gz
| Download URL | probative-0.1.0.tar.gz |
|---|---|
| Size | 944.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4ebbddf5a21b4e9745b40118979063a042f800c7e53fab5ea1340317c20988e4
|
|
BLAKE2b-256 checksum How to use checksums |
5da0be242e5ea66372d6e0ba92a5a05e5f90e973e88af5a21543e138d002d63f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / probative-0.1.0-py3-none-any.whl
| Download URL | probative-0.1.0-py3-none-any.whl |
|---|---|
| Size | 140.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
786ed29b805580131a383f15895548969468225a3255df5c1402025da1658d3e
|
|
BLAKE2b-256 checksum How to use checksums |
3ea86ea7920d1cf04be92eb1068eeb2767d5d96d4e4db6897af3392282b456b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency log