/** * MongoDB AI Toolkit — las herramientas que un mongoAction expone cuando * `aiEnabled` está encendido. * * ## Lo que el modelo NO elige (2026-09-24, decisiones de Ariel) * * - **La colección.** Es la del nodo y no hay parámetro para cambiarla: para * tocar otra se conecta otro nodo. Una herramienta de base de datos que deja * al modelo nombrar la colección le da acceso a todo lo que la credencial * alcanza, y eso no se ve al mirar el lienzo. * - **El JavaScript del servidor.** `$where`, `$function` y `$accumulator` * ejecutan código dentro de Mongo; el handler los rechaza en cualquier * filtro o pipeline que venga del modelo. * - **Escribir desde una agregación.** `$out` y `$merge` son las dos etapas que * escriben; `aggregate_documents` las rechaza, y por eso cuenta como lectura. * * ## Los nombres * * Cada nombre empieza por el verbo que dice lo que hace, porque el `destructive` * de cada operación lo pone `marcarDestructivas` leyendo ese verbo (ver * `clase-de-herramienta.ts`). Por eso `findOneAndUpdate` se ofrece como * `update_and_return_document` y no como `find_and_update_document`: con el * segundo nombre el verbo diría «lectura» de algo que pisa un documento. * * Los textos van en inglés porque los lee el modelo. */ import type { MongoOperation } from './mongo-operations'; export interface MongoToolkitParameter { name: string; /** El esquema MCP sólo admite estos tres; lo estructurado viaja como JSON * en un `string`, igual que las filas de Sheets. */ type: 'string' | 'number' | 'boolean'; description: string; required: boolean; } export interface MongoToolkitSpec { operation: MongoOperation; label: string; toolName: string; description: string; parameters: MongoToolkitParameter[]; /** Pisa o borra. Lo pone `marcarDestructivas`, no se escribe a mano. */ destructive?: boolean; } export declare const MONGO_TOOLKIT_SPECS: MongoToolkitSpec[]; /** Las herramientas por nombre, para despachar una llamada del modelo. */ export declare const MONGO_TOOLKIT_BY_TOOL_NAME: Record;