Skip to main content
Glama

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).

Related MCP server: ai-rete-rag

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Deterministic MCP notary suite for subscription policies: refund, cancellation, return, and trial terms. Stateless, read-only rules engine with auditable verdicts and hosted remote endpoints.
    4 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enforces deterministic policy decisions on AI agent tool calls, supporting allow, deny, correct, escalate, and human review actions with verifiable audit receipts.
    12 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables agents to evaluate context against custom criteria and receive typed decisions (classifications, scores, probabilities) from JEV or local LAYA, with validation policies and durable decision records.
    4
    1
    Apache 2.0