aethis-mcp), and LangGraph has first-class MCP support via the official langchain-mcp-adapters package. No custom adapter needed — register aethis-mcp as a stdio MCP server and its tools become LangChain Tools your graph nodes can call.
The runtime decision path stays in formal logic. The LLM still drives the conversation; the eligibility step does not.
Install
aethis-mcp reachable on your PATH. Either install it once:
npx resolve it on first call (slower cold start, no global install).
The recipe
aethis_schema (to discover fields), then aethis_decide (to evaluate), and report the result. The decision itself never touches the LLM — it’s evaluated by the constraint solver on api.aethis.ai and returns a stable decision_id + inputs_hash you can store for audit.
What just happened
The LLM picks the ruleset, parses the user’s free-text, and presents the result. The decision is made by formal logic on the server and is byte-stable across runs.Anonymous vs keyed paths
aethis_decide/aethis_schema/aethis_explainon a public ruleset — anonymous, no API key. Works in the recipe above as-is.aethis_decideon a composed Rulebook (rulebook_id=...) — always scope-gated. Pass an API key via the MCP server env:- Authoring tools (
aethis_create_ruleset,aethis_generate_and_test,aethis_publish) — require a key and are in private beta. Request access at aethis.ai/developer-access.
When to use this vs an LLM-only node
Use Aethis when:- The decision must be stable across runs (audit, compliance, regulated decisions).
- You need a trace back to the source clause for every result.
- The rule is encodable (legislation, policy, contract, internal SOP) — anything where “the answer is in this document” rather than “the answer requires judgment.”
- The decision genuinely requires open-ended reasoning.
- The cost of a wrong answer is low.
- The rule changes every conversation.
See also
- Evaluate a case — the four-call pattern (
schema → fields → decide → explain) without LangGraph. - MCP server overview — full tool list and stdio config.
- Decision envelope — what’s in the response, and how to use
inputs_hash+decision_idfor audit.