Skip to main content
Glama
ellmos-ai

ellmos-controlcenter-mcp

Official

Evaluate an action against the nearest permission register

controlcenter_evaluate_permission
Read-onlyIdempotent

Reports an agent's permission for an action at a path by resolving the nearest LOCK.permissions register, returning allow, deny, ask, or unknown.

Instructions

Reports what a LOCK.permissions register allows an agent to do at a path, using the nearest register found in the path or any parent, with precedence deny > ask > allow > default. This is a report, not enforcement: it grants no authority and blocks nothing. If no register exists anywhere up the chain, the answer is 'unknown' rather than 'allow' — the absence of a rule is not a permission.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path the action would touch.
agentYesAgent identity as used in applies_to_agents, e.g. claude, codex, gemini.
actionYesAction in register syntax, e.g. Read(a.txt), Write(**/CREDENTIALS/**), Bash(rm:*), mcp__vendor__tool.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.7.1

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: it clarifies this is a report not enforcement ('grants no authority and blocks nothing'), and it explains the precedence order (deny > ask > allow > default) and the 'unknown' fallback when no register exists. This is meaningful behavioral disclosure that helps an agent understand what the tool actually does and doesn't do.

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?

Three sentences with zero waste. The core purpose is front-loaded ('Reports what a LOCK.permissions register allows'), followed by the critical non-enforcement clarification, and the fallback behavior. Every sentence earns its place and the structure is logical.

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?

For a read-only evaluation tool with 100% schema coverage and no output schema, the description is quite complete. It covers the lookup mechanism (nearest register), the precedence order, the non-enforcement nature, and the fallback behavior. The only minor gap is that it doesn't describe the exact return format (e.g., what the response looks like), but since there's no output schema and the tool is simple, this is a minor omission.

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 the schema already documents all three parameters (path, agent, action) with examples. The description adds context about how the parameters relate to the register lookup (nearest register, precedence), but doesn't add new parameter-level semantics beyond what the schema provides. Baseline 3 is appropriate since the schema does the heavy lifting.

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 states a specific verb ('Reports'), a resource ('LOCK.permissions register'), and the exact scope ('at a path, using the nearest register found in the path or any parent'). It also distinguishes itself from enforcement tools by explicitly saying 'This is a report, not enforcement'. This clearly differentiates it from siblings like controlcenter_check_lock and controlcenter_list_locks.

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?

The description clearly explains when to use this tool: when you need to know what a permissions register allows at a path. It also explains the fallback behavior when no register exists ('unknown' rather than 'allow'). However, it doesn't explicitly name alternative tools to use instead (e.g., controlcenter_check_lock for checking a specific lock, or controlcenter_list_locks for listing registers), so it misses the explicit alternatives guidance.

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