Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

ai·rete·rag

PYPI · AI-RETE-RAG-MCP · 3 COMPONENTS

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

0 this week 82 Trust /100

Last scanned (18 hours ago)

Scores higher than 84% of PyPI servers

Category AI and Machine Learning

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 1 of 31 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability74
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2783 tokens (~309/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
What we tested

Checks we ran (16)

  • Malware scan
  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • Provenance
  • License
  • Maintenance
  • Security disclosure
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 27 Oct 26 0
    • Stability: 0.97 → pass security
  • 26 Oct 26 0
    • Stability: pass → 0.97 functional
  • 20 Oct 26 0
    • Stability: 0.97 → pass security
  • 19 Oct 26 0
    • Stability: pass → 0.97 functional
  • 18 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 17 Oct 26 −13
    • Malware scan: pass → unverified ▼ security
    • Stability: 0.87 → pass security
    • MCP protocol: Implements a current MCP spec version (2026-07-28). functional
    • Package version: 0.10.0 → 0.11.0 functional
  • 15 Oct 26 +41
    • Injection markers: unverified → pass ▲ security
    • Stability: unverified → 0.83 ▲ functional
    • Schema quality: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Tool coverage: unverified → 100 ▲ functional
    • Package version: 0.9.0 → 0.10.0 functional
  • 14 Oct 26 0
    • Package version: 0.9.0 → 0.10.0 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/ai-rete-rag-mcp@0.11.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi
Reason No attestation published

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend Known build tool hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 31 packages
Packages resolved 31
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 9 exposed · ~2,571 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
decide ~711

Make 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…

NameTypeReqDescription
as_of–––
domainstringyes–
extract_from_retrievalboolean––
fact_sources–––
facts–––
filter_retrieval_with_rulesboolean––
querystringyes–
response_modestring––
unstructured_text–––
NameTypeReqDescription
resultstringyes–

No examples provided.

get_parameters ~160

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

NameTypeReqDescription
domainstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

get_rule_source ~78

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

NameTypeReqDescription
domainstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

get_usage ~22

Show this account's decision usage, plan, and remaining monthly quota.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

import_policy_rules ~324

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

NameTypeReqDescription
domainstringyes–
policy_textstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

ingest_text ~348

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

NameTypeReqDescription
domainstringyes–
effective_from–––
effective_until–––
source–––
supersedes–––
textstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

list_documents ~27

List the documents ingested into a domain's knowledge base.

NameTypeReqDescription
domainstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

list_rules ~169

List 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`.

NameTypeReqDescription
domain–––
NameTypeReqDescription
resultstringyes–

No examples provided.

put_rules ~732

Create 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…

NameTypeReqDescription
domainstringyes–
dry_runboolean––
rules_yamlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

Install

How do I install the ai·rete·rag MCP server?

ai·rete·rag runs locally as a PyPI package, launched with uvx ai-rete-rag-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · ai-rete-rag-mcp

# add to Claude Code
claude mcp add com-ai-rete-rag-ai-rete-rag-mcp -- uvx ai-rete-rag-mcp
Common questions

What is the ai·rete·rag MCP server?

ai·rete·rag is an MCP server listed in the public MCP registry as com.ai-rete-rag/ai-rete-rag-mcp. Author rules from policy docs, then decide: a Rete engine gives the verdict, an LLM explains why. This page covers its PyPI package (ai-rete-rag-mcp).

Is the ai·rete·rag MCP server safe to use?

ai·rete·rag scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the ai·rete·rag MCP server expose?

ai·rete·rag exposes 9 tools: decide, list_rules, get_parameters, ingest_text, list_documents, and 4 more. Their descriptions and schemas cost roughly 2,571 tokens of context every time the server is loaded.

Is the ai·rete·rag MCP server still maintained?

ai·rete·rag is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the ai·rete·rag MCP server under?

ai·rete·rag declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

What did VerifyMCP test on the ai·rete·rag MCP server?

VerifyMCP ran 16 checks on ai·rete·rag, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.