mcpField
R
ruleverdict

ruleverdict

Local
github.com/CloudCorpRecordsAI & Agents0Updated 1w ago

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

  1. 01Deterministic rule-based decisions
  2. 02Document-grounded explanations
  3. 03Inspect required facts and rules
  4. 04Draft rules from policy text
  5. 05Import and validate YAML rule sets
  6. 06Manage documents and usage

Use cases

  1. 01Decide cases from structured facts
  2. 02Check which inputs a domain needs
  3. 03Convert policy documents into cited rule drafts
  4. 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.

mcp.json · Universal config
{
"mcpServers": {
"cloudcorprecords-ruleverdict": {
"command": "npx",
"args": [
"-y",
"@reneturcios/ruleverdict"
]
}
}
}
Run commandnpx -y @reneturcios/ruleverdict

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@reneturcios/ruleverdict0.1.0
ocighcr.io/cloudcorprecords/ruleverdict:0.1.0

Tools

9

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
textstringNoText content for this call.
as_ofstringNoEvaluate as of this date (optional).
factsobjectNoFacts payload for this call.
domainstringYesDomain this call applies to.
pattern_01booleanNoFirst pattern to evaluate.
pattern_02booleanNoSecond pattern to evaluate.
fact_sourcesobjectNoSources for the facts (optional).

Details

From the project README

ruleverdict

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 as Authorization: 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 to https://ai-rete-rag.com (see "Endpoint provenance" below).

Tools

  • decide — make a decision in a domain from structured facts and/or free text; 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 flags pattern_01 (Pattern 01: rules-scope retrieval) and pattern_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 calling decide.
  • 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; pass dry_run to validate without saving.
  • ingest_text — add policy text to a domain's knowledge base, optionally with effective_from / effective_until dates or a supersedes pointer 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/decide with the arguments as the JSON body (used by decide).
  • GET <base>/api/domains/{domain}/parameters (used by get_parameters).
  • GET <base>/api/domains/{domain}/rules (used by list_rules).
  • GET <base>/api/domains/{domain}/rules/source (used by get_rule_source).
  • POST <base>/api/domains/{domain}/rules/import with body {"text": "..."} (used by import_policy_rules).
  • PUT <base>/api/domains/{domain}/rules with body {"rules": "...", "dry_run": ...} (used by put_rules).
  • POST <base>/api/domains/{domain}/documents with body {"text": "...", ...} (used by ingest_text).
  • GET <base>/api/domains/{domain}/documents (used by list_documents).
  • GET <base>/api/usage (used by get_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

Markdown supported

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.