About ruleverdict
ruleverdict is an MCP server for applying domain rule sets to facts or text and returning deterministic, document-grounded decisions. It also supports inspecting, drafting, publishing and validating rules, plus tracking usage.
Key features
- 01Deterministic rule-based decisions
- 02Document-grounded explanations
- 03Inspect required facts and rules
- 04Draft rules from policy text
- 05Import and validate YAML rule sets
- 06Manage documents and usage
Use cases
- 01Decide cases from structured facts
- 02Check which inputs a domain needs
- 03Convert policy documents into cited rule drafts
- 04Review rule sets and monthly quota
MCP support
Exposes decision, rule, document and usage tools to MCP clients. It forwards requests to the ai-rete-rag service and returns its responses unchanged.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
9Saved tool list · updated 1w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| text | string | No | Text content for this call. |
| as_of | string | No | Evaluate as of this date (optional). |
| facts | object | No | Facts payload for this call. |
| domain | string | Yes | Domain this call applies to. |
| pattern_01 | boolean | No | First pattern to evaluate. |
| pattern_02 | boolean | No | Second pattern to evaluate. |
| fact_sources | object | No | Sources for the facts (optional). |
Details
From the project READMEruleverdict
Ask a rule engine, not a guess. ruleverdict is a small client for the ai-rete-rag service, which decides cases with deterministic rules instead of free-form model output: you pass structured facts and/or free text for a domain, and the verdict comes from that domain's rule set, explained with the documents the rules rest on.
Alongside deciding, it covers the full life of a domain: see which facts the rules need, inspect the rules themselves, pull them down as editable YAML, draft new rules from a written policy (each draft cites the sentence it encodes, and nothing is saved until you say so), publish a replacement rule set, feed policy text into the knowledge base, and watch the monthly decision quota. Responses come back exactly as the service returned them: nothing is trimmed, renamed or summarised on the way through.
Configuration
Two environment variables control the client:
AI_RETE_RAG_API_KEY(optional) — when set, it is sent on every request asAuthorization: Bearer <key>. Leaving it unset is not an error: shared demo domains work keyless, and enforcement problems such as a missing domain claim or an exhausted quota surface from the API as errors rather than failing locally.AI_RETE_RAG_API_URL(optional) — API base URL. Defaults tohttps://ai-rete-rag.com(see "Endpoint provenance" below).
Tools
decide— make a decision in a domain from structuredfactsand/or freetext; the verdict comes from the rule engine, with a document-grounded explanation. Optional:as_of(a date the decision is evaluated at),fact_sources(where each fact came from), and the retrieval-mode flagspattern_01(Pattern 01: rules-scope retrieval) andpattern_02(Pattern 02: retrieval into working memory). Typical call:decide(domain="loan", facts={...}).get_parameters— the facts a domain's rules decide on, most decisive first: what to collect before callingdecide.list_rules— inspect a domain's rules: conditions, verdicts, salience and overlaps.get_rule_source— fetch a domain's rule set as editable YAML.import_policy_rules— turn a written policy document into draft rules, each citing the sentence it encodes. Nothing is saved.put_rules— create or replace a domain's rule set from YAML; passdry_runto validate without saving.ingest_text— add policy text to a domain's knowledge base, optionally witheffective_from/effective_untildates or asupersedespointer to the version it replaces.list_documents— browse a domain's ingested documents.get_usage— check your plan and remaining monthly decision quota.
Unset optional arguments are omitted from requests
entirely. An upstream non-2xx reply fails with
ai-rete-rag error: HTTP <status> and an unreachable API
with ai-rete-rag unreachable.
Endpoint provenance
The original project's README pins the nine tools, the
worked decide example, the Pattern 01 / Pattern 02
modes, both environment variable names, the optional-key
behaviour, and the dry-run / nothing-saved workflow
semantics — but not the request paths. Those are
reconstructions, labelled as such:
POST <base>/api/decidewith the arguments as the JSON body (used bydecide).GET <base>/api/domains/{domain}/parameters(used byget_parameters).GET <base>/api/domains/{domain}/rules(used bylist_rules).GET <base>/api/domains/{domain}/rules/source(used byget_rule_source).POST <base>/api/domains/{domain}/rules/importwith body{"text": "..."}(used byimport_policy_rules).PUT <base>/api/domains/{domain}/ruleswith body{"rules": "...", "dry_run": ...}(used byput_rules).POST <base>/api/domains/{domain}/documentswith body{"text": "...", ...}(used byingest_text).GET <base>/api/domains/{domain}/documents(used bylist_documents).GET <base>/api/usage(used byget_usage).
Domain path segments are URL-encoded.
CLI
Each tool is a subcommand taking one JSON argument string:
npx @reneturcios/ruleverdict decide '{"domain":"loan","facts":{"income":85000}}'
npx @reneturcios/ruleverdict get_parameters '{"domain":"loan"}'
npx @reneturcios/ruleverdict list_rules '{"domain":"loan"}'
npx @reneturcios/ruleverdict get_rule_source '{"domain":"loan"}'
npx @reneturcios/ruleverdict import_policy_rules '{"domain":"loan","text":"Loans need verified income."}'
npx @reneturcios/ruleverdict put_rules '{"domain":"loan","rules":"rules: []","dry_run":true}'
npx @reneturcios/ruleverdict ingest_text '{"domain":"loan","text":"Policy text"}'
npx @reneturcios/ruleverdict list_documents '{"domain":"loan"}'
npx @reneturcios/ruleverdict get_usage '{}'
npx @reneturcios/ruleverdict --version
Output is the tool's result text (the upstream body on
success). Exit codes: 0 on success, 1 on a runtime
error, 2 on a usage error.
MCP server
npx -y @reneturcios/ruleverdict mcp
MCP client config (the key is optional; provide it through the client's environment when you have one):
{
"mcpServers": {
"ruleverdict": {
"command": "npx",
"args": ["-y", "@reneturcios/ruleverdict", "mcp"],
"env": {
"AI_RETE_RAG_API_KEY": "<your key>"
}
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/ruleverdict
docker run --rm ghcr.io/cloudcorprecords/ruleverdict get_usage '{}'
Development
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (fake fetch only, no network)
npm run dev # run the CLI from source
License
MIT — Copyright (c) 2026 Rene Turcios
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.