MCP-AQL

CRUDE semantic endpoints for LLM-native control.

Most MCP servers expose a flat list of tools. DollhouseMCP uses MCP-AQL instead, grouping operations by what they do to state so the AI gets semantic clarity before it acts.

Endpoint Purpose Permission level
Create Add new elements, install from the Collection, add memory entries Confirm once per session
Read List, search, get details, activate, introspect Auto-approved
Update Edit existing elements Confirm each time
Delete Remove elements, clear entries Confirm each time
Execute Run agents, manage execution lifecycle, confirm operations Confirm each time

Endpoint modes

Mode Endpoints Tokens Env variable Best for
CRUDE 5 ~4,300 MCP_AQL_ENDPOINT_MODE=crude Default semantic grouping with host-level permission control
Single 1 ~350 MCP_AQL_ENDPOINT_MODE=single Constrained multi-server environments
Discrete ~40 ~29,600 MCP_INTERFACE_MODE=discrete Backward compatibility with older tool naming

Why CRUDE matters

Representative operations by endpoint

Endpoint Representative operations
Create create_element, addEntry, install_collection_content, submit_collection_content, record_execution_step
Read list_elements, search_all, search_collection_enhanced, open_portfolio_browser, convert_skill_format, get_relationship_stats
Update edit_element, upgrade_element
Delete delete_element, clear, clear_github_auth
Execute execute_agent, complete_execution, continue_execution, prepare_handoff, resume_from_handoff, approve_cli_permission
{ "operation": "introspect", "params": { "query": "operations" } }
{ "operation": "introspect", "params": { "query": "format", "name": "persona" } }

The same progressive-disclosure principle applies to elements themselves: metadata in frontmatter gives the model a quick scan of what exists, and the full markdown body is only loaded when the element is activated or inspected more deeply.

MCP-AQL is not just a naming layer. It is the structure that lets the server describe itself at runtime while keeping permission behavior legible to both the LLM and the human operator.