autobat-v3
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Health check. Dice si AutoCAD responde y que documento esta activo. |
| find_drawingA | Busca archivos DWG/DXF en el disco por nombre (subcadena, sin distinguir mayusculas). Ordena por fecha de modificacion. La busqueda no sale de las raices permitidas (variable AUTOBAT_SEARCH_ROOTS). |
| open_drawingA | Abre un DWG/DXF y lo deja activo. Acepta ruta completa o solo el nombre. read_only=True por default: abrir el original de un cliente en modo escritura por accidente no se deshace. Si ya estaba abierto, lo activa. |
| list_open_drawingsC | Dibujos abiertos en AutoCAD y cual es el activo. |
| set_active_drawingA | Activa un dibujo ya abierto, por nombre o ruta. |
| create_working_copyA | Duplica un DWG en disco antes de tocarlo. Sin path usa el dibujo activo. Obligatorio antes de cualquier operacion destructiva: la copia se hace a nivel filesystem, con el original sin abrir en modo escritura. |
| create_drawingA | Crea un dibujo nuevo y vacio. Es temporal: no queda en disco hasta que lo guardes con save_drawing(path). |
| save_drawingA | Guarda el dibujo activo. Sin path hace Save; con path, SaveAs. |
| read_drawingA | LEER ANTES DE ESCRIBIR. Panorama del dibujo activo: unidades, extension, cantidad de entidades, conteo por tipo, definiciones de bloque y que XREF cuelgan. Es el primer paso antes de tocar cualquier plano. por_capa=true agrega el conteo por capa, que es lo unico que exige barrer el modelspace entero por COM (decenas de segundos en un plano de Azcuy). Para preguntar por una capa puntual usa query_entities(layer=...), que filtra dentro de AutoCAD. |
| get_drawing_infoA | Listado crudo de las primeras entidades del modelspace. Para entender un archivo usa read_drawing, que da el panorama completo. |
| list_layersA | Tabla de capas con color ACI, tipo de linea y estado. El color importa mas que el lineweight: en Azcuy el grosor de impresion sale del color via el CTB. El filtro matchea tambien capas renombradas por XREF. |
| list_blocksB | Definiciones de bloque: cuales son XREF, su ruta, y opcionalmente cuantas veces se insertan. count_inserts cuesta un barrido completo del modelspace. |
| inspect_blockA | Radiografia de una definicion de bloque sin insertarla: en que capas esta su geometria (crudas y sin el prefijo de XREF), que bloques anidados trae, su bounding box y si contiene residuos bindeados de otra obra. |
| query_entitiesA | Entidades del modelspace que cumplen los filtros (AND). Filtra dentro de AutoCAD con un SelectionSet, asi que es rapido incluso en planos grandes. NO entra en XREF ni en bloques: para eso esta find_nested. |
| find_nestedA | Busca DENTRO de XREF y bloques anidados, devolviendo coordenadas de MUNDO ya compuestas a traves de toda la cadena, mas rotacion, escala y si esta espejado. Es la unica forma de ubicar bien lo que vive dos niveles abajo. PASA near_x/near_y/radius siempre que sepas donde mirar. Los filtros de capa/tipo se aplican despues de visitar cada nodo, asi que NO achican el recorrido; la ventana espacial si, porque poda ramas enteras. Sin ventana, sobre un plano con XREF, esto tarda minutos. Tiene presupuesto de tiempo (segundos, default 25): si se corta, devuelve lo que encontro con parcial=true en vez de morir por timeout. Un resultado marcado parcial NO es el total. |
| placement_contextA | DONDE, con que rotacion, escala y capa va lo que estas por dibujar — deducido de lo que YA esta dibujado. Corrre esto antes de cualquier insert_block / draw_bathroom sobre un plano existente. Resuelve las tres cosas que hacen que una insercion caiga en cualquier lado: la caja REAL de cada bloque (los de Azcuy tienen la geometria hasta 186 m lejos de su punto base, asi que el punto de insercion no dice donde se ve), el marco girado del edificio (2.41 grados: razonar en X/Y del mundo da mal), y la convencion de capa/escala/rotacion, que se copia de las instancias existentes en vez de inventarse. Devuelve anclas con bbox de mundo, las filas detectadas con su paso, los huecos libres y un punto sugerido con la llamada exacta a insert_block. Es read-only. |
| entities_nearB | Entidades cerca de un punto, ordenadas por distancia. Es el motor de deteccion de interferencias: columnas, vigas, pases y plenos que caen sobre un area. Usa ventana de cruce, filtrada dentro de AutoCAD. |
| extract_attributesA | Extrae atributos de bloque en formato tabla, listo para volcar a planilla (carpinterias, locales, plenos, terminaciones, tomas). Entra en XREF. Filtra por firma de tags, que es lo unico confiable cuando el bloque es dinamico y perdio el nombre del padre. Si el computo es de una zona puntual (una unidad, un baño), pasa near_x/near_y/radius: sin ventana hay que recorrer todas las XREF. Tiene presupuesto de tiempo (segundos, default 25). Si se corta devuelve parcial=true: esa tabla esta INCOMPLETA y no se vuelca a planilla como si fuera el computo total. Para un archivo entero subi segundos. |
| locate_in_polygonsA | Cruza poligonos con las etiquetas que caen adentro. Motor de la auditoria de superficies: que rotulo corresponde a que area. No confia en el flag Closed (en el plano de venta solo 7 de 25 polilineas estan cerradas): cierra el anillo por calculo y reporta el gap. |
| set_propertyA | Cambia una propiedad (color, layer, linetype, lineweight, linetypescale, visible) en las entidades que matcheen. Sin confirm=true devuelve un PLAN con affected_count y no toca nada. Para jerarquia de grosores en Azcuy la propiedad es COLOR: el grosor de impresion sale del color via el CTB, no del lineweight. |
| transform_entitiesA | Mueve, rota y/o escala entidades existentes. rotation en grados float, respecto de (base_x, base_y). Sin confirm=true devuelve un PLAN. |
| copy_entitiesA | Copia entidades con desplazamiento, rotacion opcional y remapeo de capa. Es el camino para 'copiar un bano y ajustarlo': el bano no es un bloque, se copia una base. target_layer sirve para el remapeo AUX -> ZD-* al pasar del catalogo a produccion. Sin confirm=true devuelve un PLAN. |
| delete_entitiesA | Borra entidades. Exige al menos un filtro y confirm=true. Antes de usarla, create_working_copy: esto no se deshace desde el agente. |
| undoA | Deshace las ultimas operaciones del dibujo activo. Deshace el historial de AutoCAD, no solo lo que hizo el agente. |
| list_referencesA | Catalogo de referencias dibujables: simbolos electricos (teclas de luz, tomas, bocas), artefactos sanitarios y equipamiento. Son simbolos convencionales — la geometria real de Azcuy (tipologias de bano A01..D09, bloques de unidad UF*) NO esta aca: se trae con import_block. |
| draw_referenceB | Dibuja una referencia del catalogo en (x, y). Se materializa como bloque: la definicion se crea una vez y despues cada pedido es una insercion. Escala sola segun las unidades del dibujo (metros / cm / mm). rotation en GRADOS como float — nunca redondear a ortogonal. |
| draw_roomB | Dibuja el contorno de una habitacion/local como polilinea CERRADA, con rotulo de nombre y superficie. width/height van en las unidades del dibujo (son medidas reales del proyecto, no se reescalan). |
| draw_wallA | Dibuja un MURO de punta a punta, con espesor real y sus dos capas. No es draw_room (eso es el contorno de un local) ni una pieza de biblioteca (esas son de largo fijo). Un muro de Azcuy son 4 lineas paralelas sin tapas: revoque + mamposteria + mamposteria + revoque. tipo='interna' = 11 cm (1,5+8+1,5), 'externa' = 21 cm (2+17+2). Medido de sus propios planos. espesor/revoque en METROS; las coordenadas van en unidades del dibujo. puntos=[[x,y],...] dibuja una tirada entera con las esquinas resueltas por inglete. Graba el eje en XData: es lo que despues usa cut_opening. |
| cut_openingA | Abre un vano real en un muro hecho con draw_wall, para que la puerta o la ventana tengan hueco abajo y no queden apoyadas encima. distancia y ancho van en METROS y se miden SOBRE EL EJE del muro, desde el primer punto con el que se creo. No recibe un punto de mundo a proposito: ningun muro de estos planos esta a 0/90 grados (el edificio esta a 357,586588) y un punto de mundo sobre una recta girada miente por redondeo. pieza='puerta-planta-090' toma el ancho real de la biblioteca (0,909, no 0,90) y avisa si la profundidad de la pieza no coincide con el muro. Devuelve el punto y la rotacion exactos para insertar la carpinteria. Sin confirm=true devuelve el plan y no toca nada. |
| import_blockA | Trae la definicion de un bloque desde otro DWG al dibujo activo, sin insertarlo. Este es el camino para la geometria REAL de Azcuy: las 70 tipologias de bano viven en SR-TIPOLOGIAS BAÑOS.dwg y se copian, no se redibujan. Despues posicionalo con insert_block. |
| list_bathroom_typesA | Las 70 tipologias de bano de Azcuy (A01..D09 y sus espejadas 'e') con programa, medidas reales y artefactos. Sale de un indice local: no toca AutoCAD y es instantaneo. familia: A (Master Suite), B (Suite), C (Toilette), D (Servicio). |
| draw_bathroomA | Inserta una tipologia de bano REAL de Azcuy en (x, y), desde la biblioteca local del MCP: no abre, copia ni cierra ningun archivo. Acepta 'B2' o 'B02' indistintamente. Viene sin el rotulo del catalogo. Es la unica forma correcta de poner un bano. NO uses draw_reference: eso dibujaria un bano inventado con aspecto de real. El espejado es un bloque aparte (B02 vs B02e), no xscale = -1. editable=true la inserta explotada. recorte_esquina (NE/NO/SE/SO) + recorte_ancho + recorte_alto recortan un rectangulo de una esquina, para cuando pasa una columna. |
| list_libraryA | Que hay en la biblioteca local del MCP, con medidas reales. No toca AutoCAD. Un DWG = una pieza, y la CARPETA es la categoria: banos, sanitarios, carpinterias, mamposteria, equipamiento, revestimientos, electricidad, incendio, estructura. |
| add_to_libraryA | Guarda un objeto del dibujo activo como pieza propia de la biblioteca, en assets/library//.dwg, y la indexa. Es la via para sumar assets nuevos (una silla, una puerta en planta, una pared) sin pasar por ningun catalogo. Pasa handles= (de query_entities/entities_near) o block= (nombre de una definicion de bloque). origen: 'min' lleva la esquina inferior izquierda al (0,0) — necesario, porque la geometria de un plano esta en coordenadas del mundo y guardada tal cual se inserta a kilometros del punto pedido; 'centro' para simbolos; 'dejar' no la mueve. rotation (grados) endereza la pieza antes de guardarla: lo dibujado sobre la planta de Azcuy esta a 357.588 grados (la inclinacion de 2.41 del edificio), asi que va rotation=2.412 o la pieza arrastra ese giro para siempre. Si es un bloque conviene block= en vez de handles=: la definicion ya esta a 0 grados. Pide confirm=true solo si va a pisar una pieza existente. |
| index_libraryA | Reindexa assets/library/ leyendo la CARPETA como categoria. Corre esto despues de mover, agregar o borrar DWG a mano. Incremental: solo abre en AutoCAD lo que cambio (compara mtime). Guarda medidas, capas internas y peso de cada pieza, y saca del indice las que ya no estan en disco. purgar=true ademas limpia cada DWG en el lugar y lo vuelve a guardar: lento, se corre una vez, adelgaza las piezas que arrastran tablas de simbolos ajenas. |
| draw_from_libraryB | Inserta cualquier pieza de la biblioteca local (artefacto, grifería, luminaria, pieza de instalacion) en (x, y). Sin abrir el archivo de origen. rotation en GRADOS float. explode=true la deja editable. |
| cut_cornerA | Recorta un rectangulo en una esquina (NE/NO/SE/SO) de un conjunto de entidades — el caso 'es un B2 pero hay que sacarle 1x1 porque pasa una columna'. Usa resta booleana nativa sobre el contorno, no una aproximacion. Reporta que artefactos quedan en la zona recortada: esos NO se mueven solos. Sin confirm=true devuelve el plan. |
| list_source_blocksA | Nombres de bloque disponibles en OTRO archivo, sin importar nada. Sirve para resolver un nombre antes de traerlo. |
| insert_blockA | Inserta un bloque ya definido en el dibujo. Soporta escala negativa: Azcuy espeja las unidades con xscale = -1 sobre la misma definicion. Ojo, a nivel tipologia de bano el espejado es un bloque aparte (A01 vs A01e). |
| draw_lineC | Linea de (x1, y1) a (x2, y2). |
| draw_circleB | Circulo con centro (cx, cy) y radio dado. |
| draw_rectangleC | Rectangulo como polilinea cerrada entre dos esquinas opuestas. |
| draw_textC | Texto en (x, y) con la altura dada. |
| zoom_extentsA | Zoom a la extension del dibujo activo. Si AutoCAD quedo oculto (Visible=False), lo trae al frente primero: no se puede encuadrar una ventana que no esta en pantalla. |
| show_windowB | Trae la ventana de AutoCAD al frente. Sirve cuando el servidor se engancho por COM sin que AutoCAD estuviera a la vista. |
| send_commandA | Escotilla de escape: manda comandos o AutoLISP a la linea de comandos. Usala solo para lo que no cubre ninguna tool. Hay filtro de seguridad, y todo lo que modifica el dibujo exige confirm=true. SendCommand es asincronico: confirma el envio, no el exito. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/cruz636/autobat-v2'
If you have feedback or need assistance with the MCP directory API, please join our Discord server