A hallucination engine. Typed pseudorandom data via LLM. No guarantees. Trigger discipline required.
Project description
grievous
"Your lightsabers will make a fine addition to my collection."
A hallucination engine. Typed pseudorandom data via Anthropic API. MCP server.
⚠️ No Guarantees
This is not a PRNG. This is not a test data framework with schema validation. This is a footgun with good trigger discipline expected of the operator.
- Output is plausible, not correct
- Output is nondeterministic — same schema, different result every time
- Output is not validated — if the model returns garbage, you get garbage
- Output is not uniform — LLMs have opinions about what "random" looks like
Good for: seeding dev DBs, one-off REPL sessions, agentic pipelines that need typed data fast, anywhere plausible beats uniform.
Not for: cryptography, reproducibility, performance-sensitive paths, production data.
Install
pip install grievous-mcp
Set your API key:
export ANTHROPIC_API_KEY=sk-ant-...
Typical Usage
From Python
from grievous.backend import generate
# Single object — natural language schema
user = generate("a User with name, age, email, and city")
# {"name": "Priya Nair", "age": 34, "email": "priya.nair@example.com", "city": "Bangalore"}
# Batch
products = generate("a Product with id, name, price_usd, and category", count=5)
# [{"id": 1, "name": "Wireless Headphones", ...}, ...]
# JSON Schema works too
import json
schema = json.dumps({
"type": "object",
"properties": {
"transaction_id": {"type": "string", "format": "uuid"},
"amount_usd": {"type": "number"},
"status": {"type": "string", "enum": ["pending", "cleared", "failed"]},
}
})
txn = generate(schema)
# {"transaction_id": "a3f1...", "amount_usd": 142.5, "status": "cleared"}
# Freeform — anything the model can hallucinate
tensor = generate("a 4x4 float32 matrix, values between -1 and 1")
timestamp = generate("an ISO 8601 timestamp from sometime in 2019")
phone = generate("a plausible Indian mobile number")
Returns parsed JSON if the model cooperated. Raw string if it didn't. No exceptions.
As an MCP Server
Run directly:
grievous
Add to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"grievous": {
"command": "grievous",
"env": {
"ANTHROPIC_API_KEY": "your-key-here"
}
}
}
}
Tool: generate
generate(schema, count=1, model="claude-haiku-4-5-20251001")
| Arg | Type | Default | Description |
|---|---|---|---|
schema |
string | — | Natural language or JSON Schema |
count |
int | 1 | Number of instances |
model |
string | claude-haiku-4-5-20251001 |
Any Anthropic model |
Roadmap
- v1.0 — Anthropic API backend (current)
- v2.0 — Ollama/local model support (if there's interest)
Why "Grievous"
He's a General (general-purpose). He collects everything you hand him (schemas, types, whatever). He's chaotic but capable. He doesn't work for one army.
The cough is the nondeterminism.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file grievous_mcp-0.1.1.tar.gz.
File metadata
- Download URL: grievous_mcp-0.1.1.tar.gz
- Upload date:
- Size: 56.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa3e1d39c2653e09c65e59f61fca45ab8ebc5641b439eb0882e043b05eee5d90
|
|
| MD5 |
739dde2d20acef4bc6be5a4656d8961e
|
|
| BLAKE2b-256 |
99cede005f1a72fb6cf0592de99d6cb273890c8674d9b91c2d1cf00147066697
|
File details
Details for the file grievous_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: grievous_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf6fb4a0e4daa55f76b250cbcf7ee28bf2acff96b85bee4be54e695e655fe72a
|
|
| MD5 |
753feaf243536b148e7e0cb6f3038ebc
|
|
| BLAKE2b-256 |
4cb323982a693036f34cb049b614d825b7ad8cb34abc08789f36c5a8a20ba898
|