Skip to main content

ai·rete·rag

com.ai-rete-rag/ai-rete-rag-mcpVersion 0.11.0

Author rules from policy docs, then decide: a Rete engine gives the verdict, an LLM explains why.

Status

Responds596 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 13:47 UTC
Latency
596 ms
Remotes responding
2 of 2
Sign-in
OAuth sign-in, No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://ai-rete-rag.com/mcpResponds689 ms
No sign-in

Claude Code

claude mcp add --transport http ai-rete-rag-mcp https://ai-rete-rag.com/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: ai-rete-rag-mcp
Remote MCP server URL: https://ai-rete-rag.com/mcp

Cursor

{
  "mcpServers": {
    "ai-rete-rag-mcp": {
      "url": "https://ai-rete-rag.com/mcp"
    }
  }
}

VS Code

code --add-mcp '{"name":"ai-rete-rag-mcp","type":"http","url":"https://ai-rete-rag.com/mcp"}'
Streamable HTTP
https://ai-rete-rag.com/mcp/authSign-in required596 ms
OAuth sign-in

Claude Code

This server asks for sign-in. Your client opens the sign-in when it connects.

claude mcp add --transport http ai-rete-rag-mcp https://ai-rete-rag.com/mcp/auth --header 'Authorization: Bearer <YOUR_TOKEN>'

Replace <YOUR_TOKEN> before running.

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: ai-rete-rag-mcp
Remote MCP server URL: https://ai-rete-rag.com/mcp/auth
This server expects the header Authorization.

Cursor

{
  "mcpServers": {
    "ai-rete-rag-mcp": {
      "url": "https://ai-rete-rag.com/mcp/auth",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

Replace <YOUR_TOKEN> before running.

VS Code

code --add-mcp '{"name":"ai-rete-rag-mcp","type":"http","url":"https://ai-rete-rag.com/mcp/auth","headers":{"Authorization":"Bearer <YOUR_TOKEN>"}}'

Replace <YOUR_TOKEN> before running.

Streamable HTTP
pypi: ai-rete-rag-mcp 0.11.0
Package only

PyPI (uvx)

claude mcp add ai-rete-rag-mcp -e 'AI_RETE_RAG_API_KEY=<YOUR_AI_RETE_RAG_API_KEY>' -- uvx ai-rete-rag-mcp==0.11.0

Replace <YOUR_AI_RETE_RAG_API_KEY> before running.

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

9 tools

Tools of ai·rete·rag
Read-only
Idempotent
Open world
decideMake a deterministic, auditable decision in a domain. The verdict comes from the domain's rule set (Rete engine, never the LLM), so it is reproducible and compliant. The explanation is generated from the domain's ingested policy documents. Without an API key only the shared demo domains are available, and the response carries `next_step`: how to get a free key for your own rules. Pass that on to the user rather than dropping it. Args: domain: Rule-set domain, e.g. "loan", "fraud", "clinical". query: Natural-language question or decision request. facts: Structured facts for working memory, e.g. {"credit_score": 710, "annual_income": 85000}. Use `get_parameters` to see which fields a domain's rules test. Facts you read yourself from photos, document scans, voice notes or video go here, under those field names; explicit facts always win over anything extracted server-side. fact_sources: Where each fact in `facts` came from, e.g. {"monthly_income": "payslip.jpg", "claim_usd": "voice note 1"}. Always set this for facts you read from a file, photo, recording or video: it is stored in the decision's audit record so a reviewer can tell typed facts from ones read off evidence. Facts without a source are recorded as "request". as_of: Read the domain's policy documents as of this day, as YYYY-MM-DD (default: today). Use the date a case was filed to decide it under the policy in force then; the rules themselves are always the current ones. unstructured_text: Optional free text (an application, a case note, a voice-note transcript, what a photo or video shows); facts are extracted from it automatically and merged. response_mode: "verdict_only" (fastest), "verdict_with_explanation", or "full_audit" (every rule evaluation + retrieved chunks, available on every plan including the free tier). rule_firings come NoNoNot declaredNot declared
get_parametersList the input parameters a domain's rules decide on — the facts to collect before calling `decide`. Derived from your account's own copy of the rules, so it covers your custom domains too. Each parameter has its `field` name (the key to use in `facts`), `kind` (number / boolean / string), the `tests` rules make on it (e.g. >= 720 — match these units and scales), the `rules` and `verdicts` it can lead to, and `max_salience`. Parameters come most decisive first: those feeding the highest-salience rules, which win when several rules fire. Also returns every verdict the domain can reach. Not declaredYesNot declaredNot declared
get_rule_sourceFetch a domain's rule set as editable YAML (plus the parsed rules and whether you may edit it). Use this before `put_rules` to see the current rules. For a built-in demo domain you get your own copy's rules once you have edited it, otherwise the shared demo's. Not declaredYesNot declaredNot declared
get_usageShow this account's decision usage, plan, and remaining monthly quota.Not declaredYesNot declaredNot declared
import_policy_rulesConvert a written policy document into DRAFT decision rules (LLM-assisted). Returns validated draft rules (when/action, including chained asserts where the policy stages its determinations), derived rule→rule edges, and overlap warnings. Each returned rule carries a `citation` field holding the policy sentence it encodes (also summarized in the top-level `citations` map). Coverage runs the other way too: `uncovered_sentences` lists policy sentences no rule's citation points back to (out of `policy_sentence_count`), and `unverified_citations` names rules whose quote is missing or not found verbatim in the policy. Show both to the user: an uncovered sentence may need a rule; an unverified one may be a paraphrase that misstates the policy. `background_sentences` is the subset of uncovered sentences with no obligation language (definitions, preamble); lead with the others, but mention these too, since the split is a keyword heuristic. NOTHING IS SAVED: review the drafts (and show them to the user), then persist explicitly with `put_rules` — validate first with dry_run=true, and keep each rule's `citation` in the YAML you save so the audit trail back to the policy survives. Args: domain: Domain the rules are drafted for (an owned domain or a new name). policy_text: The policy document text (max ~50k characters). Not declaredYesNot declaredNot declared
ingest_textAdd policy/reference text to a domain's knowledge base. The text is chunked and embedded; explanations for future decisions in this domain will cite it. Creating a new domain claims it for your account (plan limits apply). Ingesting into a built-in demo domain gives your account its own copy of that demo (it counts as one of your domains); the shared demo others see is unchanged. On team plans, only the domain admin (the member who created the domain, or the subscription owner) can add documents. Documents can be dated. A decision only cites documents in force on its date, so a replaced policy is never quoted for a new decision. To publish a new version, ingest it under a new `source` with `supersedes` naming the old one: the old document stops applying on the new one's `effective_from` (today if not given), and the new one starts that day. A document can be superseded only once; to replace a successor, supersede the successor. Args: domain: Domain to ingest into (existing or new). text: The policy or reference text. source: Optional source name shown in the document list. effective_from: First day this document applies, as YYYY-MM-DD (default: always). effective_until: First day it no longer applies, as YYYY-MM-DD (default: no end). supersedes: Source name of the document this one replaces. NoNoNot declaredNot declared
list_documentsList the documents ingested into a domain's knowledge base.Not declaredYesNot declaredNot declared
list_rulesList the decision rules for one domain (or all domains). Returns each rule's conditions — either a flat AND list (field / operator / value) or a `when` condition tree (nested all/any/not) — plus its verdict, salience, and any asserted facts (`action.assert`, the facts a rule produces for other rules to consume). `edges` lists the derived rule→rule dependencies: src asserts a fact type that dst's conditions test (forward chaining). Each rule may also carry `citation` — the policy sentence it encodes — which is what lets a decision be traced back to the source clause. Also includes overlap warnings. Use this to learn which fact fields a domain expects before calling `decide`. Not declaredYesNot declaredNot declared
put_rulesCreate or replace a domain's rule set from YAML (self-serve rule authoring). The first save to a new domain claims it for your account (plan limits apply). Saving to a built-in demo domain saves your own copy of it, seeded from the demo; the shared demo others see is unchanged. Rules are validated before saving — set dry_run=true to validate without persisting. The response reports ok/errors, the parsed rules, and any overlap warnings. YAML format — a list of rules. Flat form (conditions are AND-ed): - name: "Approve" salience: 10 conditions: - type: loan field: credit_score op: ">=" value: 700 action: verdict: "APPROVED" reason: "Credit score meets threshold" Tree form — `when:` holds nested all/any/not condition groups, and an action may assert derived facts that other rules consume (forward chaining; the rule graph derives from these automatically): - name: "Sepsis Screen" salience: 30 when: all: - {type: clinical, field: temperature_f, op: ">=", value: 101.5} - any: - {type: clinical, field: wbc_count, op: ">", value: 12.0} - {type: clinical, field: bands_pct, op: ">", value: 10} action: verdict: "URGENT_ALERT" assert: - {type: sepsis_flag, fields: {severity: high}} - name: "Escalate" salience: 40 when: all: - {type: sepsis_flag, field: severity, op: "==", value: high} - {type: clinical, field: age, op: ">=", value: 65} action: verdict: "ADMIT_ICU" Use either `conditions:` or `when:` per rule, never both. `not` passes when the inner condition does not hold (including when the field is absent). Produce/consume cycles between rules are rejected at validation. An action may also carry `retrieval_scope: { <key>: <value> }` to narrow which documents retrieval searches (Pattern 01). A rule may also carry `citation:` — the policy YesNoNot declaredNot declared

Details

Registry status
Active
Published
Oct 17, 2026
Updated
Oct 17, 2026
Categories (suggested)
Knowledge and notesSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing