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.

io.github.Aethis-ai/aethis-mcp

NPM · AETHIS-MCP · SCANNED SEP 21

Deterministic eligibility decisions and test-driven rule authoring via the Aethis developer API.

Available components

+19 this week 90 Trust /100
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 Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 97 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to Aethis-ai/aethis-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 6 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability80
  • 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 6867 tokens (~196/item across 35 items; 35 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 Management60
  • Stability observed for 18 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 36 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.Aethis-ai/aethis-mcp server?

io.github.Aethis-ai/aethis-mcp runs locally as an npm package, launched with npx -y aethis-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · aethis-mcp

# add to Claude Code
claude mcp add aethis-ai-aethis-mcp -- npx -y aethis-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "aethis-ai-aethis-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "aethis-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "aethis-ai-aethis-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "aethis-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add aethis-ai-aethis-mcp -- npx -y aethis-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "aethis-ai-aethis-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "aethis-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add aethis-ai-aethis-mcp --command npx --arg -y --arg aethis-mcp
# ~/.hermes/config.yaml
mcp_servers:
  aethis-ai-aethis-mcp:
    command: "npx"
    args: ["-y", "aethis-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "aethis-ai-aethis-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "aethis-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add aethis-ai-aethis-mcp -t stdio -c npx -a -y aethis-mcp
// mcp.json
{
  "mcpServers": {
    "aethis-ai-aethis-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "aethis-mcp"
      ]
    }
  }
}
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.

  • 21 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Sept 26 +16
    • Malware scan: unverified → pass security
  • 14 Sept 26 −15
    • Malware scan: pass → unverified security
    • Package version: 0.17.4 → 0.18.0 functional
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +4
    • Stability: unverified → 0.27 functional
  • 3 Sept 26 81

    First indexed and scored.

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 21 Sept 2026 · Analysed npm/aethis-mcp@0.18.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo Aethis-ai/aethis-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/Aethis-ai/aethis-mcp/.github/workflows/release.yml@refs/tags/v0.18.0
Rekor log index 2832435290
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:e8cd07975962c62401c34241efcafd50dd4ea97de49aee84656716bc7fcd5e00c85993386dd73fa8c6fc481e91b959dfed12e3084505f46648987b587

Background: How many MCP packages publish verified provenance →

Dependencies 97 packages
Packages resolved 97
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 35 exposed · ~6,115 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
aethis_add_domain_guidance ~234

Add a guidance hint at domain level — applies to ALL projects in the domain, not just one project. Use for cross-section principles: solicitor navigation, discretion model, raw-facts principle. These hints are retrieved automatically during generation for any project in the domain. Use adherence='exact' with process_type='section_discovery' to specify exactly which sections the SME wants — the LLM will follow them precisely.

NameTypeReqDescription
adherencestringHow strictly the LLM must follow this hint. 'exact' = must follow, produce nothing beyond what is specified (use for SME-defined section lists); 'guided' = strong preference, may adapt if source text…
domainstringyesDomain identifier (e.g. 'uk_citizenship')
guidance_textstringyesThe guidance hint text
notesstringSME commentary or legislation provenance. Never sent to LLM.
process_typestringWhich authoring phase this hint targets — rule_generation (default), field_extraction, or section_discovery

No output schema declared.

No examples provided.

aethis_add_guidance ~168

Add a guidance hint to a project. Use for domain knowledge not in the source text. Then call aethis_generate_and_test to regenerate.

NameTypeReqDescription
adherencestringHow strictly the LLM must follow this hint. 'exact' = must follow precisely, produce nothing beyond what is specified; 'guided' = strong preference, may adapt if source text requires (default); 'loos…
guidance_textstringyesDomain knowledge or correction not present in the source text
process_typestringWhich authoring phase this hint targets. Use 'field_extraction' for field design principles (e.g. raw-facts principle, solicitor navigation). Defaults to 'rule_generation'.
project_idstringyesThe project ID

No output schema declared.

No examples provided.

aethis_archive_project ~41

Archive a project. Archived projects are preserved but excluded from listing. This is permanent.

NameTypeReqDescription
project_idstringyesThe project ID to archive

No output schema declared.

No examples provided.

aethis_archive_ruleset ~50

Archive a rule ruleset. Archived rulesets are preserved but excluded from /decide resolution. This is permanent.

NameTypeReqDescription
ruleset_idstringyesThe ruleset ID to archive

No output schema declared.

No examples provided.

aethis_cancel_generation ~167

Request cancellation of one observed generation job and release only its project ownership. First call aethis_generation_status and bind the exact job_id; confirm_job_id protects against accidental target mismatch but does not itself prove human approval. MCP hosts should require destructive-action approval, and agents must obtain a fresh explicit user reply before calling. The response outcome is cancelled or idempotent already_cancelled. Cancellation may be cooperative rather than immediate. It is a destructive mutation and requires an API key.

NameTypeReqDescription
confirm_job_idstringyesRepeat job_id to bind the cancellation target; host/user approval is a separate requirement
job_idstringyesThe exact job ID returned by aethis_generation_status
project_idstringyesThe project ID containing the observed generation job

No output schema declared.

No examples provided.

aethis_create_rulebook ~269

Create a new Rulebook — the composed-whole execution unit that bridges multiple rulesets (the parts) via outcome_logic. Created empty: no rulesets, no field vocabulary, no tests, status='draft'. Populate afterwards with aethis_create_ruleset for each section, then wire up the field vocabulary and composition logic before publishing. Requires an API key.

NameTypeReqDescription
descriptionstringOptional description
domainstringDomain hint, lower-snake (e.g. 'uk_fsm')
namestringyesHuman-readable name for the rulebook (e.g. 'UK FSM')
robot_hintsobjectAssistant guidance for the conversational agent, keyed by conversational beat. Natural language only — no rule syntax, no field keys. Active beats: general_context, preamble, session_start, postamble…
slugstringStable human-readable alias (e.g. 'aethis/uk-fsm'). Globally unique when set; recommended for any rulebook referenced from outside this session.

No output schema declared.

No examples provided.

aethis_create_ruleset ~140

Create a new rule ruleset with source text and test cases (TDD). Test cases are required. After creation, call aethis_generate_and_test.

NameTypeReqDescription
domainstringDomain hint (e.g., 'uk_immigration')
namestringyesHuman-readable name for the rule ruleset
section_idstringyesUnique section identifier (e.g., 'flight_readiness')
source_textstringyesThe source legislation, policy, or specification text
test_casesarrayyesTest cases: [{name, field_values, expected_outcome}]. At least 1 required.

No output schema declared.

No examples provided.

aethis_decide ~364

Evaluate eligibility against either a single published ruleset (ruleset_id) or a composed rulebook (rulebook_id). Provide exactly one. A rulebook composes multiple rulesets via outcome_logic — use it for the whole-form decision (e.g. `aethis/uk-fsm`). A ruleset is one section in isolation (e.g. `aethis/uk-fsm/child-eligibility`). Returns eligible/not_eligible/undetermined with optional trace and explanation. When undetermined, includes next_question and optimal_path. Rulebook evaluation always requires an API key; ruleset evaluation can be anonymous against public rulesets.

NameTypeReqDescription
field_valuesobjectyesInput field values (see aethis_schema for required fields)
include_explanationbooleanInclude human-readable rule explanations with source citations
include_graph_overlaybooleanStamp this decision's per-criterion outcome (satisfied/not_satisfied/pending) onto the ruleset-map graph and return it as graph_overlay — the same {nodes, edges, sections, stats} shape as aethis_grap…
include_tracebooleanInclude the full evaluation trace showing how each rule was evaluated
rulebook_idstringThe ID or slug of a composed rulebook (e.g. `aethis/uk-fsm`). Mutually exclusive with ruleset_id. Requires an API key — anonymous callers get HTTP 401.
ruleset_idstringThe ID or slug of a single published ruleset. Mutually exclusive with rulebook_id.

No output schema declared.

No examples provided.

aethis_discover_fields ~275

Discover input fields from the project's source text. Returns field names, types, descriptions, and completeness assessment. Run this BEFORE writing test cases to ensure field names are consistent. Call repeatedly with aethis_refine_fields to improve completeness.

NameTypeReqDescription
anthropic_keystringYour Anthropic API key. [sensitive — do not echo or log] Deprecated in favour of anthropic_key_env / anthropic_key_keychain: when passed as a tool argument, the raw value is written verbatim to the h…
anthropic_key_envstringPreferred. Name of an env var (set in your MCP client config) holding the Anthropic API key. The raw value never appears in the tool call, so it does not land in the session transcript.
anthropic_key_keychainstringPreferred on macOS. Keychain reference: either 'service:account' or just 'account' (service defaults to 'aethis-anthropic-key'). The server reads it via the `security` command at call time.
openai_keystringDeprecated — use anthropic_key_env or anthropic_key_keychain. [sensitive — do not echo or log] Accepted for backwards compatibility.
project_idstringyesThe project ID

No output schema declared.

No examples provided.

aethis_discover_rulesets ~156

List public showcase rulesets across all tenants. No authentication required. Use this for first-time discovery, demos, or whenever the user asks 'what rulesets are available?' without referencing a specific project. Returns slug, ruleset_id, name (the human-readable section title), description, field_count, rule_count for each — pass the slug or ruleset_id to aethis_decide / aethis_schema / aethis_explain to interact with one. Distinct from aethis_list_rulesets, which is tenant-scoped.

NameTypeReqDescription
limitintegerMaximum rulesets to return (default 20, max 50).
offsetintegerPagination offset (default 0).

No output schema declared.

No examples provided.

aethis_discover_sections ~332

Discover the logical sections of source legislation for a domain. Provide the raw text of your source documents (legislation, guidance notes, form instructions). The service analyses the content and identifies which sections should be authored as separate rule rulesets. Run BEFORE creating projects — you need to know the sections before you can create one. Call aethis_refine_sections if sections are missing or incorrectly split.

NameTypeReqDescription
anthropic_keystringYour Anthropic API key. [sensitive — do not echo or log] Deprecated in favour of anthropic_key_env / anthropic_key_keychain: when passed as a tool argument, the raw value is written verbatim to the h…
anthropic_key_envstringPreferred. Name of an env var (set in your MCP client config) holding the Anthropic API key. The raw value never appears in the tool call, so it does not land in the session transcript.
anthropic_key_keychainstringPreferred on macOS. Keychain reference: either 'service:account' or just 'account' (service defaults to 'aethis-anthropic-key'). The server reads it via the `security` command at call time.
domainstringyesDomain identifier, e.g. 'uk_citizenship'
openai_keystringDeprecated — use anthropic_key_env or anthropic_key_keychain. [sensitive — do not echo or log] Accepted for backwards compatibility.
sourcesarrayyesSource documents to analyse. Provide the actual text content.

No output schema declared.

No examples provided.

aethis_explain ~50

Get human-readable descriptions of the rules in a ruleset, including criteria groups, requirements, and exception paths.

NameTypeReqDescription
ruleset_idstringyesThe ID of the published rule ruleset

No output schema declared.

No examples provided.

aethis_explain_failure ~132

Diagnose why a ruleset produced an unexpected outcome for specific test inputs. Use during rule authoring when a test fails — returns the diagnosis, criteria with DSL metadata (waivable, review_required), and a targeted hint for fixing the rule.

NameTypeReqDescription
expected_outcomestringyesThe outcome you expected from this input
field_valuesobjectyesThe test input values that produced the unexpected outcome
ruleset_idstringyesThe ID of the rule ruleset to diagnose
test_namestringName of the failing test case (included in the diagnosis for context)

No output schema declared.

No examples provided.

aethis_generate_and_test ~298

Generate rules from source text and run all test cases. Triggers generation, polls until complete, then runs tests. Returns pass/fail with regression detection. Usually takes 60-120 seconds; if polling times out, use aethis_generation_status before retrying, and aethis_cancel_generation only when the caller wants to stop the run.

NameTypeReqDescription
anthropic_keystringYour Anthropic API key. [sensitive — do not echo or log] Deprecated in favour of anthropic_key_env / anthropic_key_keychain: when passed as a tool argument, the raw value is written verbatim to the h…
anthropic_key_envstringPreferred. Name of an env var (set in your MCP client config) holding the Anthropic API key. The raw value never appears in the tool call, so it does not land in the session transcript.
anthropic_key_keychainstringPreferred on macOS. Keychain reference: either 'service:account' or just 'account' (service defaults to 'aethis-anthropic-key'). The server reads it via the `security` command at call time.
openai_keystringDeprecated — use anthropic_key_env or anthropic_key_keychain. [sensitive — do not echo or log] Accepted for backwards compatibility.
project_idstringyesThe project ID

No output schema declared.

No examples provided.

aethis_generation_status ~101

Check the current generation job for a project without changing it. Returns generation_contract_version, telemetry_availability, server-authoritative worker_lifecycle, retry_readiness, and the active or most recent job's progress and safe failure diagnostics. Retry only when retry_readiness is ready; an old heartbeat alone does not prove worker death. Tenant-scoped — requires an API key.

NameTypeReqDescription
project_idstringyesThe project ID whose generation status to inspect

No output schema declared.

No examples provided.

aethis_graph ~233

Get the ruleset-map graph for a single published ruleset (ruleset_id) or a composed rulebook (rulebook_id) — provide exactly one. Returns {ruleset_id|rulebook_id, slug, name, graph: {nodes, edges, sections, stats}, mermaid}: each node's display.sentence / display.routes / display.expr shows how that branch composes, and mermaid is a ready-to-render diagram string. Use this to visualise or explain a ruleset's/rulebook's structure before or instead of aethis_explain. Ruleset graphs may be public (no auth for public showcase rulesets); rulebook graphs always require an API key.

NameTypeReqDescription
rulebook_idstringThe slug (e.g. `aethis/uk-fsm`) or opaque id (`rb_*`) of a composed rulebook. Mutually exclusive with ruleset_id. Requires an API key — anonymous callers get HTTP 401.
ruleset_idstringThe ID or slug of a single published ruleset. Mutually exclusive with rulebook_id.

No output schema declared.

No examples provided.

aethis_list_domain_guidance ~54

List all active guidance hints for a domain. Returns cross-section hints that apply to all projects in the domain.

NameTypeReqDescription
domainstringyesDomain identifier (e.g. 'uk_citizenship')

No output schema declared.

No examples provided.

aethis_list_guidance ~54

List all guidance hints accumulated for a project. Shows the text, source, and active status of each hint. Use before adding new guidance to avoid duplicates.

NameTypeReqDescription
project_idstringyesThe project ID

No output schema declared.

No examples provided.

aethis_list_projects ~33

List all projects in the current tenant. Returns project IDs, names, domains, and latest ruleset information.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

aethis_list_rulebooks ~154

List rulebooks (composed wholes that bridge multiple rulesets) in the current tenant. Returns rulebook_id, slug (e.g. `aethis/uk-fsm`), name, domain, status (draft/active/archived), version, outcome_logic (the composition Expr AST), ruleset_refs, and timestamps. Use this when the user asks 'what rulebooks exist?' or to disambiguate whether several `<ns>/<x>/*` rulesets are bridged into one parent rulebook. Tenant-scoped — requires an API key. Pass a returned rulebook_id or slug to aethis_decide (rulebook_id arg) or aethis_rulebook_schema.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

aethis_list_rulesets ~82

List all rule rulesets for a project, including version history. Shows ruleset ID, human-readable name (the section title the ruleset covers, e.g. 'Knowledge of language and life in the UK'), status (active/archived), version, field count, and rule count.

NameTypeReqDescription
project_idstringyesThe project ID

No output schema declared.

No examples provided.

aethis_next_question ~109

Get the optimal next question for a conversational eligibility check. Call with empty field_values for the first question, then add answers and call again until decision is reached. When the ruleset author attached notes to a question (e.g. why it is asked, or legal background), they are surfaced under a Notes block.

NameTypeReqDescription
field_valuesobjectyesAnswers collected so far (empty dict for first question)
ruleset_idstringyesThe ID of the published rule ruleset

No output schema declared.

No examples provided.

aethis_publish ~177

Publish the latest rule ruleset. Runs tests first and refuses if they fail unless force=true. Auto-deprecates previous active ruleset.

NameTypeReqDescription
forcebooleanPublish even if tests are not all passing
labelstringHuman-readable label for this ruleset version, e.g. 'v5 — raw facts, date arithmetic'. Stored on the ruleset and shown in aethis_list_rulesets.
namestringOverride the human-readable section name for this ruleset. When omitted, the ruleset keeps the name set at generation time (a titlecase of section_id, e.g. 'english_language' → 'English Language'). S…
project_idstringyesThe project ID

No output schema declared.

No examples provided.

aethis_refine ~317

Refine an existing published ruleset: add optional feedback, then make the MINIMAL edit to fix failing test cases while keeping passing tests green, and re-run the full suite (seed-from-existing incremental re-authoring). Use this to fix a specific finding without re-authoring the whole section; use aethis_generate_and_test for a from-scratch rebuild.

NameTypeReqDescription
anthropic_keystringYour Anthropic API key. [sensitive — do not echo or log] Deprecated in favour of anthropic_key_env / anthropic_key_keychain: when passed as a tool argument, the raw value is written verbatim to the h…
anthropic_key_envstringPreferred. Name of an env var (set in your MCP client config) holding the Anthropic API key. The raw value never appears in the tool call, so it does not land in the session transcript.
anthropic_key_keychainstringPreferred on macOS. Keychain reference: either 'service:account' or just 'account' (service defaults to 'aethis-anthropic-key'). The server reads it via the `security` command at call time.
feedbackstringOptional correction or domain knowledge to add before regenerating
openai_keystringDeprecated — use anthropic_key_env or anthropic_key_keychain. [sensitive — do not echo or log] Accepted for backwards compatibility.
project_idstringyesThe project ID

No output schema declared.

No examples provided.

aethis_refine_fields ~294

Add guidance to improve field discovery, then re-discover. Use when fields are missing, misnamed, or enum values are incomplete. Adds a field_extraction guidance hint and re-runs discovery.

NameTypeReqDescription
anthropic_keystringYour Anthropic API key. [sensitive — do not echo or log] Deprecated in favour of anthropic_key_env / anthropic_key_keychain: when passed as a tool argument, the raw value is written verbatim to the h…
anthropic_key_envstringPreferred. Name of an env var (set in your MCP client config) holding the Anthropic API key. The raw value never appears in the tool call, so it does not land in the session transcript.
anthropic_key_keychainstringPreferred on macOS. Keychain reference: either 'service:account' or just 'account' (service defaults to 'aethis-anthropic-key'). The server reads it via the `security` command at call time.
feedbackstringyesGuidance about missing or incorrect fields (e.g., 'Section 7 implies a criminal record check')
openai_keystringDeprecated — use anthropic_key_env or anthropic_key_keychain. [sensitive — do not echo or log] Accepted for backwards compatibility.
project_idstringyesThe project ID

No output schema declared.

No examples provided.

aethis_refine_sections ~350

Add guidance to improve section discovery, then re-discover sections. Use when sections are missing, incorrectly split, or named differently than expected. Saves the feedback as a domain-level guidance hint and immediately re-runs discovery so you can see the effect. Repeat until the section list matches your expectations.

NameTypeReqDescription
anthropic_keystringYour Anthropic API key. [sensitive — do not echo or log] Deprecated in favour of anthropic_key_env / anthropic_key_keychain: when passed as a tool argument, the raw value is written verbatim to the h…
anthropic_key_envstringPreferred. Name of an env var (set in your MCP client config) holding the Anthropic API key. The raw value never appears in the tool call, so it does not land in the session transcript.
anthropic_key_keychainstringPreferred on macOS. Keychain reference: either 'service:account' or just 'account' (service defaults to 'aethis-anthropic-key'). The server reads it via the `security` command at call time.
domainstringyesDomain identifier, e.g. 'uk_citizenship'
feedbackstringyesWhat was wrong and how to fix it, e.g. 'The english language and life in the UK test should be separate sections'
openai_keystringDeprecated — use anthropic_key_env or anthropic_key_keychain. [sensitive — do not echo or log] Accepted for backwards compatibility.
sourcesarrayyesThe same source documents used in the initial aethis_discover_sections call

No output schema declared.

No examples provided.

aethis_review_project ~375

Review an authoring project against the deterministic authoring-coach rubric and get skill-building feedback. Returns a score, per-check evidence across grounding / process / lifecycle, strengths, and the single highest-leverage next improvement. Advisory only — it never blocks publishing. The deterministic report needs no LLM key; set coach=true (with an Anthropic key) to add an LLM-synthesised coaching narrative on top of the computed checks.

NameTypeReqDescription
anthropic_keystringYour Anthropic API key. [sensitive — do not echo or log] Deprecated in favour of anthropic_key_env / anthropic_key_keychain: when passed as a tool argument, the raw value is written verbatim to the h…
anthropic_key_envstringPreferred. Name of an env var (set in your MCP client config) holding the Anthropic API key. The raw value never appears in the tool call, so it does not land in the session transcript.
anthropic_key_keychainstringPreferred on macOS. Keychain reference: either 'service:account' or just 'account' (service defaults to 'aethis-anthropic-key'). The server reads it via the `security` command at call time.
coachbooleanAdd an opt-in LLM-synthesised coaching narrative on top of the deterministic rubric. Requires an Anthropic key (anthropic_key_env / anthropic_key_keychain / anthropic_key). Off by default — the deter…
openai_keystringDeprecated — use anthropic_key_env or anthropic_key_keychain. [sensitive — do not echo or log] Accepted for backwards compatibility.
project_idstringyesThe project ID to review

No output schema declared.

No examples provided.

aethis_rulebook_schema ~172

Get the composition + aggregated input fields for a rulebook. Returns the outcome_logic Expr AST (how the bridged rulesets compose, e.g. `A AND (B OR C)`), the list of bridged rulesets (ruleset_name, ruleset_id, slug, status), and the union of all required input fields. Use this BEFORE aethis_decide on a rulebook_id to know what field_values to supply, or to inspect how a rulebook is wired. Pass a rulebook slug (e.g. `aethis/uk-fsm`) or opaque id (`rb_*`).

NameTypeReqDescription
rulebook_idstringyesThe slug (e.g. `aethis/uk-fsm`) or opaque id (`rb_*`) of the rulebook

No output schema declared.

No examples provided.

aethis_schema ~59

Get the input fields required for an eligibility check. Returns field names, types, descriptions, and allowed values. Use this before calling aethis_decide.

NameTypeReqDescription
ruleset_idstringyesThe ID of the published rule ruleset

No output schema declared.

No examples provided.

aethis_set_field_spec ~128

Store the expected field specification for a project. Once set, every aethis_discover_fields call automatically validates discovered fields against this spec. Mismatches (missing fields, wrong types, wrong enum values) generate guidance hints automatically and appear in the validation_result block. Call this BEFORE running aethis_discover_fields when the SME has already defined the field vocabulary. The spec is persisted on the project and survives across sessions.

NameTypeReqDescription
expected_fieldsarrayyesThe fields the SME expects to be discovered for this project
project_idstringyesThe project ID

No output schema declared.

No examples provided.

aethis_set_tests ~120

Replace the complete reviewed test suite for an existing project after field discovery. Requires 1 to 100 cases and replaces prior tests without creating a project or changing its sources, fields, or guidance. This is destructive. The target API must advertise replacement support before any write. If the response is interrupted, inspect the project before approving another replacement.

NameTypeReqDescription
project_idstringyesExisting project ID whose complete test suite will be replaced
test_casesarrayyesThe complete authoritative reviewed suite (1-100 cases); this replaces existing tests

No output schema declared.

No examples provided.

aethis_update_rulebook ~215

Update a Rulebook's name, description, slug, or robot_hints (assistant guidance for the conversational agent). Provide at least one field to change; omitted fields are left as-is. Requires an API key.

NameTypeReqDescription
descriptionstringNew description
namestringNew human-readable name
robot_hintsobjectAssistant guidance for the conversational agent, keyed by conversational beat. Natural language only — no rule syntax, no field keys. Active beats: general_context, preamble, session_start, postamble…
rulebook_idstringyesThe slug (e.g. `aethis/uk-fsm`) or opaque id (`rb_*`) of the rulebook to update
slugstringNew stable alias

No output schema declared.

No examples provided.

aethis_usage ~122

Show the caller's rate-limit budget per operation class over the rolling 24h window: for each of decide / generate / author / read / keys / admin, the used count, limit, remaining, and reset time. `generate` (LLM rule generation) is the scarce class; browsing and status polling (`read`) are effectively unlimited-but-metered. Check this before a large authoring run — and report remaining `generate` budget to the user — so a 429 is never the first signal. Tenant-scoped — requires an API key.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

aethis_validate_fields ~138

Assert that the discovered fields match an expected field specification. Returns a structured diff: missing fields, type mismatches, enum value mismatches, and extra fields. all_match=true only when there are no missing fields and no type or enum mismatches. Extra discovered fields do not affect all_match. Run after aethis_discover_fields to verify field coverage before writing test cases. If all_match=false, call aethis_refine_fields with guidance about the missing or incorrect fields.

NameTypeReqDescription
expected_fieldsarrayyesThe fields you expect to find in the discovered field set
project_idstringyesThe project ID

No output schema declared.

No examples provided.

aethis_validate_sections ~152

Compare discovered sections against an expected specification. Returns missing sections (expected but not found) and extra sections (found but not expected). Call after aethis_discover_sections to check whether the LLM found all sections the SME expects. If sections are missing, call aethis_add_domain_guidance with adherence='exact' to enforce them.

NameTypeReqDescription
discovered_sectionsarrayyesSection names/IDs returned by aethis_discover_sections
domainstringyesDomain identifier, e.g. 'uk_citizenship'
expected_sectionsarrayyesSection names/IDs the SME expects (snake_case, e.g. ['english_language', 'residence', 'good_character'])

No output schema declared.

No examples provided.

Common questions

What is the io.github.Aethis-ai/aethis-mcp server?

io.github.Aethis-ai/aethis-mcp is listed in the public MCP registry as io.github.Aethis-ai/aethis-mcp. Deterministic eligibility decisions and test-driven rule authoring via the Aethis developer API. This page covers its npm package (aethis-mcp).

Is the io.github.Aethis-ai/aethis-mcp server safe to use?

io.github.Aethis-ai/aethis-mcp scores 90 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. 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 io.github.Aethis-ai/aethis-mcp server expose?

io.github.Aethis-ai/aethis-mcp exposes 35 tools: aethis_schema, aethis_decide, aethis_next_question, aethis_graph, aethis_explain, and 30 more. Their descriptions and schemas cost roughly 6,115 tokens of context every time the server is loaded.

Is the io.github.Aethis-ai/aethis-mcp server still maintained?

io.github.Aethis-ai/aethis-mcp is still listed as active in the MCP registry. We last reached this channel on 21 September 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 io.github.Aethis-ai/aethis-mcp server under?

io.github.Aethis-ai/aethis-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.