Skip to main content
Glama
OpenOBA

ERDL MCP Server

by OpenOBA

ERDL MCP Server

Stop reminding your Agent to behave. Teach it. One when/then sentence is all it takes.

npm version npm downloads license tests MCP MIT

πŸ“– δΈ­ζ–‡η‰ˆ

npx -y @openoba-ai/erdl-mcp

30 rules. 5 tools. Zero config. Unlimited custom rules. Free forever.

ERDL demo β€” intercepting rm -rf /


The Problem

You tell your Agent "don't use any", "keep it short", "ask before adding dependencies". It nods. Five turns later, it's back to its old habits.

Prompt-based rules don't work. LLMs forget. They reinterpret. They rationalize. You're not guiding them β€” you're negotiating with them.


Related MCP server: Claude Critical Rules MCP Server

The Solution

ERDL (Entity-Rule Definition Language) is a deterministic rule engine that runs as an MCP Server. Your Agent doesn't try to follow rules β€” the engine enforces them before every tool call.

You say

What actually happens

"Never use any"

Blocked. The engine intercepts write_file calls, scans the content, and rejects any before the write happens.

"Don't start with 'In today's world'"

Denied. Writing rules fire before every output. The Agent receives the correction before it speaks.

"Ask before adding npm dependencies"

Intercepted. exec of npm install is stopped. You approve it, or it doesn't happen.

"Why did you do that?"

Explained. erdl_explain shows exactly which rule fired, what condition matched, and what happened.


How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Agent Workflow                        β”‚
β”‚                                                         β”‚
β”‚  User says: "Write me a function"                       β”‚
β”‚       β”‚                                                 β”‚
β”‚       β–Ό                                                 β”‚
β”‚  LLM plans: use write_file(path, code)                  β”‚
β”‚       β”‚                                                 β”‚
β”‚       β–Ό                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”‚
β”‚  β”‚    ERDL Action Guard (MCP Server)    β”‚  ← Protocol   β”‚
β”‚  β”‚                                      β”‚    Layer      β”‚
β”‚  β”‚  1. Load 30 built-in rules           β”‚               β”‚
β”‚  β”‚  2. Evaluate: field/operator/value   β”‚               β”‚
β”‚  β”‚  3. Decision: ALLOW / DENY / CORRECT β”‚               β”‚
β”‚  β”‚  4. Return badge card + explanation  β”‚               β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚
β”‚       β”‚                                                 β”‚
β”‚       β–Ό                                                 β”‚
β”‚  Tool executes (or is blocked)                          β”‚
β”‚                                                         β”‚
β”‚  No prompt engineering. No negotiation. Protocol-level. β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Quick Start

# One command. 30 rules active immediately.
npx -y @openoba-ai/erdl-mcp

That's it. No account. No API key. No configuration.

Chinese / δΈ­ζ–‡οΌš

npx -y @openoba-ai/erdl-mcp --lang zh

Add it to your MCP client:

{
  "mcpServers": {
    "erdl": {
      "command": "npx",
      "args": ["-y", "@openoba-ai/erdl-mcp@latest"]
    }
  }
}

Or let ERDL generate the config:

npx @openoba-ai/erdl-mcp@latest --setup

Supported clients: Claude Desktop Β· Cursor Β· VS Code / Copilot Β· OpenClaw Β· WorkBuddy Β· any MCP-compatible client.


ERDL vs Prompt Rules

Prompt / SKILL.md

ERDL

Enforcement

LLM "tries" to follow

Deterministic engine β€” guarantees execution

Reliability

May forget after 5 turns

Condition match is mathematical β€” zero hallucination

Visibility

Can't tell if it worked

erdl_explain shows every decision, every rule

Testing

Manual verification

erdl_simulate β€” 3 auto-generated scenarios

Portability

Tied to one platform

All MCP-compatible Agents

Overridability

LLM can "reinterpret"

Protocol-layer block β€” Agent cannot bypass


What's Included

30 Built-in Rules

Category

Count

Covers

engineering

13

Pipeline gates, no shortcuts, self-verify, decision logging, no force-push, no stash

coding

6

No any, no @ts-ignore, naming conventions, one-commit-one-change, dependency hygiene

security

6

No eval with input, no hardcoded secrets, no string SQL, validate all input, security headers, no stack traces

testing

2

Coverage never drops, no behavior without test

writing

2

Direct tone, no AI jargon

observability

1

No secrets in logs

5 MCP Tools

Tool

Use it when

erdl_evaluate

Before every tool call β€” mandatory Action Guard

erdl_simulate

Test a rule against 3 scenarios before creating it

erdl_create_rule

User says "remember this" β†’ create a rule from NL

erdl_list_rules

User asks "what rules are active?"

erdl_explain

User asks "why did you do that?" β†’ full decision trail

2 Resources

Resource

Purpose

erdl://rules/list

All active rules as JSON

erdl://status

Runtime status: rule counts by category, agent role


Creating a Rule

Turn your pain points into rules, one sentence at a time β€” banned, period. Turn your experience into rules, one sentence at a time β€” shared, forever.

Every pain point is a when(…) then(…) sentence:

when [trigger] Β· then [action]

Variable

Meaning

Example

when

What triggers it

code contains any Β· logs contain secrets Β· git stash used

then

What happens

Block it Β· Correct it Β· Allow with a warning Β· Pause for approval

Fill in the blanks:

when code contains any then block it.

That's a rule.

You β†’   "Never use `any` in TypeScript."

Agent β†’ 1. erdl_simulate   β†’ tests against 3 scenarios
        2. erdl_create_rule β†’ saves to ~/.openoba/rules/
        3. Rule is active.  β†’ next `any` is blocked.

You β†’   "Why was my code rejected?"

Agent β†’ erdl_explain β†’ full decision trail:
         βœ… no_any: tool.name in [write_file, edit, apply_patch] AND content contains "any"
         β†’ DENY: Do not use `any` type.

Or write rules by hand in ~/.openoba/rules/ (ERDL SPEC Β§5 format):

protocol: "erdl/v1"
version: "1.0.0"

rules:
  - name: "no_console_log"
    description: "Don't commit console.log statements"
    priority: 10
    when:
      logic: AND
      conditions:
        - field: "tool.name"
          operator: in
          value: ["write", "edit", "apply_patch"]
        - field: "tool.args"
          operator: match
          value: "console\\.log"
    then: DENY
    message: "Remove console.log before committing"

πŸ“š Full Tutorial β†’ Β· πŸ“– Rule Reference (30 rules) β†’


Free vs Pro

Free

Pro

5 MCP Tools

βœ…

βœ…

30 Preset Rules

βœ…

βœ…

Unlimited Personal Rules

βœ…

βœ…

Chinese / English

βœ…

βœ…

All 11 Operators

βœ…

βœ…

MIT Open Source

βœ…

βœ…

Execution Rings 1–2 (REQUEST_HUMAN, ESCALATE, ROLLBACK, QUARANTINE)

β€”

βœ…

Guardian Agent Role

β€”

βœ…

Audit Export (OCSF / OTLP)

β€”

βœ…

Team Rules

β€”

βœ…

Dashboard (hit statistics)

β€”

βœ…

Enterprise Compliance (GB/Z 185, NIST, EU AI Act)

β€”

Enterprise

Get a Pro License β†’


CLI Reference

npx @openoba-ai/erdl-mcp@latest           # Start (auto-latest via npx)
npx @openoba-ai/erdl-mcp@latest --lang zh  # Chinese mode
npx @openoba-ai/erdl-mcp@latest --upgrade   # Force upgrade
npx @openoba-ai/erdl-mcp@latest --uninstall # Clean removal
npx @openoba-ai/erdl-mcp@latest --setup     # Show MCP config
npx @openoba-ai/erdl-mcp@latest --help      # Full usage

From Source

git clone https://github.com/OpenOBA/erdl-mcp-server.git
cd erdl-mcp-server
npm install
npm run build
npm test        # 92 tests
node bin/erdl-mcp.js

Contributing

ERDL MCP Server is MIT-licensed and open to contributions. See CONTRIBUTING.md for guidelines.


Star History

If ERDL helps your workflow, give us a ⭐ on GitHub β€” it helps others discover the project.

Star History Chart


License

MIT Β· OpenOBA Β· @OpenOBA

Deterministic architecture, not prompt engineering.

Available Tools

5 tools
erdl_create_ruleCreate ERDL RuleA

Create a new ERDL rule from natural language. Use this when the user corrects your behavior and wants you to "remember" it.

EXAMPLE SCENARIOS:

  • User: "Never use 'any' types" β†’ Create: coding rule, intent: "write typescript code", DENY if "any" appears

  • User: "Don't start with 'in today's world'" β†’ Create: writing rule, intent: "write blog post", DENY

  • User: "Always use Tailwind, never inline styles" β†’ Create: design rule, intent: "create UI", ALLOW with instruction

The rule is saved to ~/.openoba/rules/ and takes effect immediately (no restart needed).

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesRule category
decisionYesALLOW with instruction, or DENY with reason, CORRECT with correction, REQUEST_HUMAN for approval
keywordsNoTool names or arg values to match against
triggersNoTool names that should trigger this rule (e.g., ["exec", "write_file"])
instructionYesWhat the Agent should do (for ALLOW) or the reason for blocking (for DENY)
naturalLanguageYesThe rule described in natural language, e.g., "Never use TypeScript any type, use unknown instead"

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It states the rule is saved to ~/.openoba/rules/ and takes effect immediately with no restart needed. While it could mention potential side effects like overwriting existing rules, the provided information is adequate for understanding the basic behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by relevant example scenarios. It is concise (three short paragraphs) and front-loaded, though the examples could be slightly trimmed. No unnecessary information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters (4 required), no output schema, and no annotations, the description covers the core use case and provides examples. However, it lacks information about return values (e.g., rule ID or success message) and error conditions. This is a minor gap, resulting in an adequate but not comprehensive description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description provides example scenarios that map natural language to category and decision, but does not add detailed semantics beyond what the schema provides. The examples help contextualize parameter usage, which justifies the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new ERDL rule from natural language.' and provides specific example scenarios that illustrate the tool's purpose. This distinguishes it from sibling tools like erdl_evaluate, erdl_explain, erdl_list_rules, and erdl_simulate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this when the user corrects your behavior and wants you to "remember" it.' This provides clear guidance on when to invoke this tool versus alternatives, and the example scenarios further illustrate appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

erdl_evaluateERDL Action Guard β€” Tool Call InterceptorA

ERDL Action Guard β€” evaluates planned tool call against loaded rules BEFORE execution.

YOU MUST call this BEFORE every tool call (exec, write_file, edit, web_search, etc). This is MANDATORY. The Guard cannot be bypassed.

After calling, check the decision:

  • ALLOW β†’ proceed with the tool call, follow any instructions

  • DENY β†’ STOP. Do not execute the tool. Tell the user what was blocked.

  • CORRECT β†’ fix the request and retry

  • REQUEST_HUMAN β†’ ask the user for approval before proceeding

Always show the result to the user as a badge card.

RESPONSE (compact badge card format):

  • "ALLOW": βœ… ERDL Guard Β· N rules

  • "DENY": πŸ›‘ ERDL Blocked Β· reason

  • "REQUEST_HUMAN": πŸ‘€ ERDL Approval Β· reason

  • "CORRECT": πŸ”§ ERDL Correct Β· correction

  • "EMERGENCY_HALT": 🚨 ERDL HALT Β· reason

  • "PASS": πŸ”΅ ERDL Pass Β· N rules checked

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idNoOptional agent identity for audit context
tool_argsNoArguments being passed to the tool
tool_nameYesName of the tool being called (e.g., "exec", "write_file", "web_search")
session_idNoOptional session identifier for audit chain

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description provides adequate behavioral insight: it evaluates rules, returns a decision, and does not execute the tool itself. It could add that no state is modified, but the core behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than necessary, including a full response format with badges and detailed decision handling. While well-structured, it could be more concise by moving the response format to a separate section or simplifying it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, one required, and nested objects, the description covers the essential usage. It lacks details on error cases (e.g., no rules loaded) but is sufficient for basic operation. The output schema is absent, so the description compensates with response format details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description repeats the parameter names but does not add meaningful meaning beyond the schema's brief descriptions. For example, 'tool_args' is described as 'arguments being passed to the tool', which is obvious.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool evaluates a planned tool call against loaded rules before execution. It distinguishes from sibling tools like erdl_create_rule, erdl_explain, etc., which handle rule management rather than evaluation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'YOU MUST call this BEFORE every tool call' and provides clear instructions for handling each decision outcome (ALLOW, DENY, CORRECT, REQUEST_HUMAN). This gives unambiguous guidance on when and how to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

erdl_explainExplain ERDL DecisionA

Show the FULL decision trail for the last action. Answers "why did you do that?" β€” shows every rule that was checked and whether it fired.

Use this when:

  • User asks "why did you act that way?"

  • User is confused about a DENY or unexpected ALLOW

  • You want to show transparency in your decision-making

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_argsNoThe same tool arguments you used for erdl_evaluate
tool_nameYesThe tool name to explain (same as you used for erdl_evaluate)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description discloses the tool shows 'every rule that was checked and whether it fired' and references 'the last action', giving insight into internal state retrieval. Missing limitations (e.g., requires prior evaluation) but sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short, front-loaded with purpose, bullet points for usage. Every sentence serves a purpose; no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description does not explain the return format or structure of the decision trail. Mentions 'shows every rule' but not how it's presented. Incomplete for a complex tool with nested objects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters. Description adds value by linking tool_name and tool_args to 'same as you used for erdl_evaluate', providing cross-tool context. No additional format details, but helpful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Show the FULL decision trail for the last action' and answers 'why did you do that?'. It distinguishes from siblings like erdl_evaluate (which runs evaluation) by focusing on explanation after an action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists when to use: when user asks why, confused about DENY/unexpected ALLOW, or for transparency. No explicit exclusion, but context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

erdl_list_rulesList ERDL RulesA

List all currently loaded ERDL rules. Use this when the user asks "what rules do you have?" or wants to see what constraints are active. Categorize by type: coding, engineering, writing, design, security, performance, testing, compliance, accessibility, custom.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by category. Use "all" or omit to show everything.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description bears the full burden. It describes a read-only listing operation with no mention of side effects, which is appropriate for a list action. The behavioral impact is minimal and predictable, fulfilling transparency needs adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (three sentences) with no wasted words. Each sentence adds value: purpose, usage guidance, and categorization hint. Structure is logical and front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description covers all essential aspects: what it does, when to use, and how to categorize results. There is no significant missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds a categorization hint ('Categorize by type: ...') that mirrors the enum in the schema but does not provide additional meaning beyond what the schema already offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and resource (ERDL rules). It includes usage examples ('what rules do you have?') and naturally distinguishes from sibling tools like erdl_create_rule or erdl_evaluate which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use the tool (when user asks about rules or constraints). Lacks explicit when-not-to-use or alternative tools, but the context of sibling names and the examples make the usage scope clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

erdl_simulateSimulate ERDL RuleA

Test a potential rule against 3 scenarios BEFORE creating it. This prevents "wishful thinking" rules that sound right but don't work.

Always call this BEFORE erdl_create_rule when the user says "remember this" or "create a rule". Show the simulation results and ask if the user wants to proceed.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesRule category
decisionYesWhat happens when rule matches
keywordsYesTool names or args values to match
ruleNameYesProposed rule name
triggersNoTool name triggers (e.g., ["exec", "write_file"])
instructionYesThe instruction or reason

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description implies it is a safe, non-destructive simulation ('test... BEFORE creating'), but without annotations it does not explicitly state it is read-only or has no side effects. Additional statements about safety would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with front-loaded purpose and clear flow. Efficient and easy to parse, though it could be slightly more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the essential workflow: test before creation, show results, ask to proceed. However, it does not explain what the '3 scenarios' are or how they are generated, leaving minor ambiguity for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does not add extra meaning beyond what is already in the parameter descriptions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies 'Test a potential rule against 3 scenarios BEFORE creating it,' providing a specific verb ('test'), resource ('rule'), and scope ('before creation'). This clearly differentiates it from the sibling tool erdl_create_rule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit instructions: 'Always call this BEFORE erdl_create_rule when the user says "remember this" or "create a rule".' It also tells the agent to show results and ask for confirmation, leaving no ambiguity about when and how to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: create, evaluate, explain, list, simulate. No overlap or ambiguity between them.

Naming Consistency5/5

All tools use a consistent 'erdl_' prefix and verb-based naming (e.g., create_rule, evaluate, explain, list_rules, simulate). Minor variation in noun inclusion is acceptable.

Tool Count5/5

5 tools is well-scoped for a rule management server. Each tool covers a necessary function without redundancy or bloat.

Completeness3/5

The tool set covers creation, evaluation, explanation, listing, and simulation, but lacks update and delete capabilities for rules, which are notable gaps for a rule management system.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OpenOBA/erdl-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server