Back to Browse

Ruleverdict MCP Server

Developer ToolsModerate5.3MCP RegistryLocal
Free

Server data from the Official MCP Registry

Deterministic rule-engine decisions with document-grounded explanations, rules and usage tools.

About

Deterministic rule-engine decisions with document-grounded explanations, rules and usage tools.

Security Report

5.3
Moderate5.3Moderate Risk

ruleverdict is a small, transparent HTTP client for the ai-rete-rag rule-engine API, and its network and environment-variable use matches that purpose. The main concerns are low: the API key is optional so write operations such as put_rules and ingest_text can run keyless and depend entirely on upstream enforcement, and the endpoint paths are admittedly unverified reconstructions. No malicious patterns, shell execution, or hardcoded secrets were found. Supply chain analysis found 3 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue.

8 files analyzed · 8 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-cloudcorprecords-ruleverdict": {
      "args": [
        "-y",
        "@reneturcios/ruleverdict"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub 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

Reviews

No reviews yet

Be the first to review this server!