/** * MCP-AQL Tools - Unified query interface for AI agents * * Provides two endpoint modes configurable via MCP_AQL_ENDPOINT_MODE environment variable: * * ## Mode 1: CRUDE Endpoints (Default) - MCP_AQL_ENDPOINT_MODE=crude * 5 tools: mcp_aql_create, mcp_aql_read, mcp_aql_update, mcp_aql_delete, mcp_aql_execute (~4,300 tokens) * * ## Mode 2: Single Endpoint (Minimal) - MCP_AQL_ENDPOINT_MODE=single * 1 tool: mcp_aql (~350 tokens) * Ideal for multi-server deployments where token budget is constrained. * * Note: These tools are only registered when MCP_INTERFACE_MODE=mcpaql (default). * When MCP_INTERFACE_MODE=discrete, discrete tools are registered instead. * * ## Why 5 CRUDE Endpoints? (Default Mode) * * The 5-endpoint CRUDE pattern (Create, Read, Update, Delete, Execute) was chosen for: * * 1. **User Comprehension**: CRUDE extends CRUD with Execute for non-idempotent * operations, making it easy for users to reason about what each endpoint can do. * * 2. **Platform Annotations**: MCP platforms like ChatGPT's apps require * tool annotations that describe safety and destructiveness. The 5-endpoint * split maps directly to distinct permission levels: * - CREATE: additive, non-destructive (readOnlyHint: false, destructiveHint: false) * - READ: safe, read-only (readOnlyHint: true, destructiveHint: false) * - UPDATE: modifying, potentially destructive (readOnlyHint: false, destructiveHint: true) * - DELETE: destructive (readOnlyHint: false, destructiveHint: true) * - EXECUTE: non-idempotent, potentially destructive (readOnlyHint: false, destructiveHint: true) * * 3. **Granular Permission Control**: Users can grant READ endpoint full access * while locking down CREATE, UPDATE, DELETE, and EXECUTE. This enables safe * read-only integrations without exposing mutation capabilities. * * ## Why Single Endpoint? (Minimal Mode) * * The single-endpoint mode was added for: * * 1. **Token Efficiency**: ~350 tokens vs ~4,300 tokens (92% reduction) * 2. **Multi-Server Deployments**: When running multiple MCP servers, token * budgets can be constrained. Single endpoint reduces overhead. * 3. **Simplified Integration**: Some clients prefer a single entry point. * * Security is maintained through server-side Gatekeeper enforcement - the * server determines which operation type is being executed and applies * appropriate permission checks. * * ## GraphQL-Style Introspection * * MCP-AQL follows GraphQL patterns for self-documentation. Tool descriptions * are generated dynamically from OPERATION_ROUTES, ensuring they always reflect * the current available operations. * * ### Introspection Examples * * List all available operations: * ```json * { "operation": "introspect", "params": { "query": "operations" } } * ``` * * Get details for a specific operation (parameters, examples, return types): * ```json * { "operation": "introspect", "params": { "query": "operations", "name": "create_element" } } * ``` * * Discover available types (e.g., ElementType enum values): * ```json * { "operation": "introspect", "params": { "query": "types", "name": "ElementType" } } * ``` * * ### Design Philosophy * * - **Single source of truth**: OPERATION_ROUTES defines all operations * - **Dynamic descriptions**: Adding an operation to OPERATION_ROUTES automatically * updates tool descriptions - no manual synchronization needed * - **Introspection-first**: LLMs discover parameters via introspect, not static docs * - **GraphQL heritage**: Patterns familiar to any LLM trained on GraphQL */ import type { MCPAQLHandler } from '../../handlers/mcp-aql/MCPAQLHandler.js'; import type { ToolDefinition, ToolHandler } from '../../handlers/types/ToolTypes.js'; /** * Get MCP-AQL tools for registration in the ToolRegistry. * * Returns different tools based on MCP_AQL_ENDPOINT_MODE environment variable: * - 'crude' (default): 5 CRUDE endpoints (Create, Read, Update, Delete, Execute) (~4,300 tokens) * - 'single': 1 unified endpoint (~350 tokens) * * Note: MCP_AQL_MODE is supported as a deprecated alias for backward compatibility. */ export declare function getMCPAQLTools(handler: MCPAQLHandler): Array<{ tool: ToolDefinition; handler: ToolHandler; }>; //# sourceMappingURL=MCPAQLTools.d.ts.map