AutoCAD MCP
Provides conversational control of Autodesk AutoCAD, enabling AI assistants to create and modify CAD drawings, build walls and openings, place blocks, inspect entities and measurements, validate plans, render views, manage colors, undo batches, and run whitelisted CAD commands.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AutoCAD MCPdraw a 7m by 5m studio with a bathroom on the right and a door between them"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AutoCAD MCP
Auteur : Jérémie BISINGWA
Serveur Model Context Protocol qui donne à un assistant IA le contrôle conversationnel d'Autodesk AutoCAD, doublé d'un moteur DXF multiplateforme qui fait tourner le projet sans AutoCAD.
Ce qui distingue ce serveur
L'assistant voit son propre dessin. L'outil de rendu renvoie une image dans la réponse. Le modèle constate qu'une porte est mal orientée et se corrige, au lieu de dessiner en aveugle.
Tout part en un seul lot. Un plan complet s'envoie en un appel, encadré par une seule marque d'annulation et suivi d'un seul rafraîchissement. Annuler une maison est un geste, pas cinquante.
Le serveur tourne sans AutoCAD. Le moteur DXF fonctionne sur macOS et Linux, produit de vrais fichiers, et permet de développer et tester le projet sans licence Autodesk.
Un échec est un échec. Toute erreur remonte avec un code et un remède. Aucun succès n'est annoncé sans preuve d'exécution.
Related MCP server: autocad-mcp
Installation
git clone https://github.com/bisingwaj/autocad-mcp
cd autocad-mcp
# Avec uv, recommandé
uv sync --extra render
uv sync --extra windows # sous Windows, pour piloter AutoCAD
# Ou avec pip
pip install -e ".[render]"
pip install -e ".[render,windows]" # sous WindowsPython 3.10 ou plus récent.
Configuration du client MCP
Sous Windows avec Cursor ou VS Code, suivez plutôt le guide pas à pas : docs/demarrage-windows.md. Il part d'une machine vierge, donne les deux formats de configuration, qui diffèrent, et commence par le mode DXF qui fonctionne sans AutoCAD.
Dans claude_desktop_config.json :
{
"mcpServers": {
"autocad-mcp": {
"command": "uv",
"args": ["--directory", "/chemin/vers/autocad-mcp", "run", "autocad-mcp"]
}
}
}Le moteur se choisit tout seul : AutoCAD sous Windows, fichier DXF ailleurs. Variables d'environnement disponibles :
Variable | Effet |
|
|
|
|
| fichier DXF ouvert par le moteur DXF |
| niveau de journal, sur stderr |
Sous Windows, AutoCAD doit être ouvert avec un dessin actif.
Les outils exposés
Outil | Rôle |
| document, unité, nombre d'entités, calques, capacités |
| inspection filtrée, réponse toujours bornée |
| résumé, longueurs, surfaces, nomenclature, proximité, fenêtre |
| contours ouverts, croisements, doublons, résidus, jonctions |
| renvoie une image du dessin |
| lot de primitives: ligne, polyligne, rectangle, cercle, arc, texte, hachure |
| lot d'éléments: réseau de murs et ses baies, pièce, étiquette |
| insertion de symboles: sanitaires, électricité, mobilier |
| suppression filtrée, confirmation exigée si le filtre est vide |
| changement de couleur |
| annulation du dernier lot |
| passerelle AutoCAD, strictement sur liste blanche |
Les murs se raccordent aux angles et les baies percent réellement la maçonnerie, ce qui rend les surfaces calculables et les contours hachurables.
Exemples de demandes
« Dessine un studio de 7 sur 5 mètres avec une salle de bain à droite, une porte entre les deux et une fenêtre au nord. »
« Montre-moi le plan. » puis « La porte s'ouvre du mauvais côté, inverse-la. »
« Combien d'entités sur le calque WALLS ? »
« Supprime tout ce qui est sur le calque ANNOTATION. »
Développement
uv run pytest -q # suite complète, passe sans AutoCAD
uv run ruff check src/ tests/
uv run mypy src/
uv run python -m autocad_mcp.devtools.contract_diff # parité des moteursLa suite tourne sur macOS, Linux et Windows. Les tests marqués windows
exigent AutoCAD et sont sautés ailleurs.
Voir docs/architecture.md pour la conception, et docs/windows-checklist.md pour la validation du moteur AutoCAD sous Windows.
Licence et avertissement
Ce logiciel utilise l'automatisation locale permise par Autodesk mais n'est pas officiellement soutenu par Autodesk, Inc. Son usage suppose une installation légitime d'AutoCAD sous licence valide.
Available Tools
12 toolsbuild_structureConstruire un lot d'éléments de bâtimentA
Construit une LISTE d'éléments de bâtiment en un seul lot: réseaux de murs percés de leurs baies, murs isolés, portes, fenêtres, pièces et étiquettes.
À utiliser pour tout ce qui relève du plan d'architecture, de préférence à draw, qui ne connaît que la géométrie nue. Chaque élément est posé sur son calque normalisé, un mur épais est une polyligne fermée donc une entité unique et hachurable, et le battant d'une porte suit l'orientation de son mur porteur.
POUR LES MURS, UTILISEZ wall_network, et donnez-lui ses openings. C'est le seul élément qui raccorde les angles et qui perce réellement la maçonnerie; wall, wall_run, door_in_wall et window ne servent plus que pour un objet isolé ou un symbole posé sur un mur existant.
Toutes les longueurs omises prennent une valeur par défaut convertie dans l'unité du document: un mur de vingt centimètres reste un mur de vingt centimètres que le dessin soit en mètres ou en millimètres.
Les angles sont en DEGRÉS. La réponse porte les handles créés ET les échecs avec l'index de l'élément fautif. Vérifiez ensuite avec render_view.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Nom du lot, qui devient le libellé de la marque d'annulation. Un plan entier annulé redevient un seul geste. Exemple: "rez-de-chaussee". | build_structure |
| elements | Yes | Éléments à construire, dans l'ordre. Chaque élément est distingué par son champ "element". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint=false, destructiveHint=false) but not the rest. The description adds crucial behavior: normalized layer placement, thick walls become closed polylines (single hatchable entity), door leaves follow wall orientation, angles corner-together instead of overlapping, openings physically cut the wall with jamb, omitted lengths default-converted to the document unit, angles in degrees, response carries created handles AND failures with the offending index. This is behavior beyond both annotations and schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the batch scope, then usage routing, then the critical wall_network rule, then default-unit behavior and return/verify. Paragraphs are purposeful; the only mild redundancy is the length-default rule stated once, which actually aids recall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param batch tool with an enormous oneOf schema and no output schema, the description fills exactly the gaps an agent needs: element-selection routing, unit/default behavior, degree convention, and the response contract (handles + failures with index) plus a verification step. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the schema already documents parameters thoroughly (per-element descriptions, openings semantics, layer list, color ACI caveats). The description reinforces the most decision-critical semantics: use wall_network for walls and give it its openings, default conversion of omitted lengths, angles in degrees. Above the baseline of 3 thanks to that if/then guidance, but not fully additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (construit) + resource (lot d'éléments de bâtiment) with an explicit enumeration of what the batch includes (réseaux de murs, baies, portes, fenêtres, pièces, étiquettes). It explicitly positions itself against the sibling 'draw' (which 'ne connaît que la géométrie nue') and against wall/wall_run/door_in_wall/window in the Openings paragraph.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use (tout ce qui relève du plan d'architecture), when-not (draw for bare geometry), and named alternatives per element type: wall_network for walls with openings, wall_run/door_in_wall/window reserved for isolated objects. Post-call verification with render_view is also prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_planVérifier le planARead-onlyIdempotent
Cherche les défauts qu'un dessin ne signale jamais de lui-même: contours qui ne se referment pas et refusent la hachure, murs qui se croisent en croix au lieu de se rejoindre, entités superposées en double, résidus de taille négligeable, extrémités qui se ratent d'un cheveu.
À appeler APRÈS un lot de construction et AVANT de livrer un plan: c'est ce qui vous permet de vous corriger seul. Chaque défaut est rendu avec sa gravité, sa localisation en coordonnées, les objets concernés et un remède en une phrase, directement exécutable.
CE QUI EST EXAMINÉ. Les entités du document, telles que le moteur les publie, donnent les doublons et les résidus. Les contours et les axes de murs, eux, doivent être FOURNIS dans contours et segments: le moteur ne publie que des boîtes englobantes, pas les sommets, et deviner une géométrie serait pire que l'avouer. Donnez-y les mêmes points que ceux passés à build_structure, c'est la vérification la plus utile.
Les seuils suivent l'unité du document: à l'échelle du mètre un écart d'un dixième de millimètre est une jonction, à l'échelle du millimètre c'est un trou. La réponse est bornée: le compte des défauts est exact, la liste est tronquée au-delà de 100 entrées.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Restreint l'examen des entités du document à ce calque, par nom exact. Omis: tout le dessin. Exemple: "WALLS". | |
| contours | No | Contours censés délimiter une surface, à confronter à leur fermeture. Exemple: [{"points": [[0,0],[4,0],[4,3],[0,3]], "ref": "sejour"}]. | |
| segments | No | Axes de murs, ou tout segment droit à confronter aux autres: croisements et trous entre extrémités. Exemple: [{"start": [0,0], "end": [4,0], "ref": "mur sud"}]. | |
| tolerance | No | Écart en deçà duquel deux points sont tenus pour confondus, et rayon de recherche des trous entre extrémités. Omise: la tolérance de l'unité du document, qui est le bon choix dans presque tous les cas. Longueur exprimée dans l'unité du document, donnée par get_drawing_info.unit (m par défaut). Exemple: 0.001. | |
| minimum_size | No | Taille en deçà de laquelle une entité est tenue pour un résidu, mesurée sur la diagonale de sa boîte englobante. Omise: la tolérance. À augmenter pour débusquer les traits parasites d'un plan repris. Longueur exprimée dans l'unité du document, donnée par get_drawing_info.unit (m par défaut). Exemple: 0.01. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, but the description adds substantial context: defect taxonomy, returned severity/location/objects/remedy, exact count with list truncation beyond 100, and the need to supply geometry because the engine only publishes bounding boxes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and timing, then organized into focused sections on what is examined and how thresholds behave. It is longer than strictly necessary, but nearly every sentence carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter validation tool with no output schema, the description covers inputs, expected output shape, truncation behavior, unit scaling, and workflow placement. Nothing an agent needs in order to call it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents each parameter in detail and the baseline is 3. The description still adds meaning by explaining why contours and segments must be supplied, tying them to build_structure, and noting that thresholds follow the document unit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, 'cherche les défauts', and a specific resource, the plan/drawing, then enumerates the defect classes it detects. This distinguishes it clearly from siblings such as build_structure and query_entities without requiring the schema to be opened.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call it AFTER a construction batch and BEFORE delivering a plan, making the workflow position unambiguous. It also directs the agent to supply the same points used by build_structure for the most useful check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_entitiesSupprimer des entitésADestructive
DESTRUCTIF ET IRRÉVERSIBLE. Supprime toutes les entités correspondant au filtre et renvoie leurs handles. undo_last_batch ne restaure PAS ce que cet outil efface: il n'annule que des créations.
À utiliser pour retirer ce qui a été mal tracé quand undo_last_batch ne suffit plus, parce que d'autres lots sont venus par-dessus, ou pour nettoyer un calque entier.
Le filtre est unifié et ses critères se combinent par ET logique: calque, type, couleur, liste de handles, fenêtre rectangulaire. Pour supprimer précisément, passez d'abord par query_entities et supprimez par handles.
Un filtre VIDE désigne le dessin entier. Dans ce cas seulement, confirm_delete_all doit valoir true, sinon l'appel est refusé avec le code confirmation_required. Ne posez ce drapeau que si l'utilisateur a demandé d'effacer tout le dessin.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type DXF de l'entité, tel que renvoyé par query_entities dans le champ "type". Exemple: "LWPOLYLINE". | |
| color | No | Couleur: nom (blue, byblock, bylayer, cyan, gray, green, light_gray, magenta, red, white, yellow, ou les synonymes français rouge, vert, bleu, jaune, gris, blanc) ou index ACI entier de 0 à 256. Omise, l'entité suit son calque (ByLayer). Exemple: "red" ou 1. Attention: l'index 0 est ByBlock, pas noir; le noir du dessin technique est l'ACI 7, nommé "white". | |
| layer | No | Nom exact du calque, comparaison par nom entier et non par sous-chaîne. Exemple: "WALLS". | |
| window | No | Fenêtre rectangulaire [xmin, ymin, xmax, ymax] dans l'unité du document. Ne retient que les entités entièrement contenues. Exemple: [0, 0, 10, 8]. | |
| handles | No | Handles d'entités. Un handle s'obtient d'abord par query_entities ou dans la réponse de draw / build_structure; il n'est jamais deviné. Exemple: ["1F3", "1F4"]. | |
| confirm_delete_all | No | Obligatoire, et à true, pour effacer TOUT le dessin, c'est-à-dire quand aucun autre critère n'est fourni. Sans effet si un critère est donné. Suppression irréversible. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds much beyond them: irreversibility, the fact that undo_last_batch will NOT restore these deletions, that handles are returned, and that an empty filter triggers a confirmation_required refusal unless the flag is set. This is exactly the behavioral context an agent needs before an irreversible call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the destructive/irreversible warning, then usage, then filter semantics, then the critical empty-filter confirmation rule. Length is justified given the irreversibility and the unusual empty-filter edge case; nothing reads as filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 6-parameter tool with no output schema, the description covers everything needed to call it safely: what is destroyed, that it is unrecoverable, what gets returned, how filters combine, and the exact guard condition for wiping the drawing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: filter criteria combine with logical AND, an empty filter means the entire drawing, and confirm_delete_all is only effective/required in that empty-filter case. It stops short of restating format details that the schema already carries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource (deletes all entities matching a filter, returns their handles) and distinguishes itself explicitly from undo_last_batch, clarifying that it cancels creations only there and not here. An agent can tell it apart from siblings like query_entities or undo_last_batch without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (remove mis-drawn geometry when undo_last_batch is insufficient or too many batches have accumulated, or clean a whole layer) and names the safer alternative workflow: use query_entities first, then delete by handles. It also states the exclusive condition for confirm_delete_all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drawDessiner un lot de primitivesA
Trace une LISTE de primitives géométriques en un seul lot: segments, polylignes, rectangles, cercles, arcs, textes, paragraphes et hachures.
À utiliser dès qu'il y a plus d'une entité à tracer, ce qui est le cas presque toujours. Le lot forme une transaction unique: une seule marque d'annulation, un seul rafraîchissement d'affichage. Enchaîner des appels unitaires est plus lent et rend l'annulation impraticable.
Pour des éléments de bâtiment (murs, portes, fenêtres, pièces), utilisez build_structure: il pose les calques normalisés et la géométrie attendue d'un plan.
Les angles sont en DEGRÉS. Les longueurs sont dans l'unité du document, que get_drawing_info donne.
La réponse porte les DEUX côtés: les handles réellement créés, et les échecs éventuels avec l'index de l'élément fautif dans la liste fournie. Un lot partiellement exécuté n'est jamais annoncé comme un succès. Vérifiez ensuite avec render_view.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Nom du lot, qui devient le libellé de la marque d'annulation. Un plan entier annulé redevient un seul geste. Exemple: "rez-de-chaussee". | draw |
| operations | Yes | Opérations à exécuter, dans l'ordre. Chaque élément est distingué par son champ "op". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: batch forms a single transaction with one undo mark and one refresh; partial execution is never reported as success; the response carries both created handles and failures with the faulting index; suggests verifying with render_view. Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false), so this supplementary behavior description is strong, though it doesn't detail auth/permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded: verb+scope first, then when-to-use, then sibling routing, then unit conventions, then response shape. Every paragraph earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a batch-mutation tool: covers scope, transaction/undo behavior, partial-failure reporting, and unit conventions. No output schema exists, and the description compensates by describing the return (handles + failures with index). Minor gap: does not state permission/auth requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters (label and the rich per-op item schemas). The description adds angle-unit (degrees) and length-unit context, but the baseline of 3 is correct when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (trace/draw) and resource (batch of geometric primitives: segments, polylines, rectangles, circles, arcs, texts, paragraphs, hatches). Explicitly distinguishes from the sibling build_structure by naming it and defining the boundary ('Pour des éléments de bâtiment... utilisez build_structure').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use rule: 'À utiliser dès qu'il y a plus d'une entité à tracer', with rationale (single undo mark, single refresh, chained calls slower). Also names the alternative build_structure and the condition that selects it (building elements).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drawing_infoÉtat du dessinARead-onlyIdempotent
Décrit le document courant: moteur utilisé, unité de longueur, nombre d'entités, liste des calques avec leur couleur et leur état, limites du dessin, et valeurs par défaut converties dans l'unité du document.
À appeler EN PREMIER, avant tout tracé: l'unité conditionne toutes les longueurs que vous allez donner ensuite, et la liste des calques évite d'en inventer un nouveau alors qu'il existe. À rappeler après avoir ouvert un autre document.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Les annotations confirment en lecture seule et idempotent. La description ajoute un contexte précieux : l'unité influence les longueurs futures, et la liste des calques évite les doublons. Elle ne détaille toutefois pas le format de retour.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Deux phrases bien construites, sans répétition. La première décrit le contenu, la seconde donne des directives d'utilisation précises.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complète pour un outil sans paramètre et sans schéma de sortie. La description couvre l'essentiel des besoins d'un agent : quand l'utiliser et ce qu'il renvoie. Il manque juste une indication sur la structure exacte du retour.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Aucun paramètre, donc base 4. La description n'a pas besoin de préciser des paramètres et se concentre sur le contenu retourné, bien que cela dépasse le cadre de la sémantique des paramètres.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Il précise l'action et la ressource (décrire le document courant) et énumère les informations retournées. Cela le distingue nettement des outils voisins comme query_entities ou measure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Il donne une instruction explicite : 'À appeler EN PREMIER, avant tout tracé' et 'À rappeler après avoir ouvert un autre document'. Il indique aussi pourquoi : l'unité et les calques conditionnent les appels suivants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measureMesurer le dessinARead-onlyIdempotent
Mesure et résume le dessin sans l'énumérer. UN SEUL outil, dont le champ mode choisit la question:
summary: état des lieux complet — combien d'entités, sur quels calques, de quels types, entre quelles limites.
totals: longueur et surface cumulées.
by_layer / by_type: les mêmes quantités, réparties par calque ou par type.
quantities: la nomenclature, une ligne par couple calque/type.
nearest: les entités les plus proches d'un point, avec leur distance. Répond à « qu'y a-t-il ici ».
in_window: les entités d'une zone rectangulaire, au choix entièrement contenues ou simplement traversées.
À utiliser AVANT de modifier un dessin que vous n'avez pas produit, pour savoir ce qu'il contient sans rapatrier ses entités une à une, et APRÈS un lot pour vérifier des quantités. Pour voir le dessin plutôt que de le chiffrer, utilisez render_view; pour obtenir les handles d'entités précises, query_entities.
HONNÊTETÉ DES MESURES: longueurs et surfaces ne sont comptées que pour les entités dont le moteur les publie. Chaque mesure porte donc counted, missing et complete, et son total vaut null — et non zéro — quand aucune entité n'a répondu. Un total de zéro signifierait « rien ne mesure », ce qui est faux; null signifie « le moteur ne le dit pas ». Les comptes d'entités, eux, sont toujours exacts.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Question posée. "nearest" exige point, "in_window" exige window; les autres modes les ignorent. | summary |
| type | No | Restreint la mesure à ce type DXF. Omis: tous les types. Exemple: "LWPOLYLINE". | |
| layer | No | Restreint la mesure à ce calque, par nom exact. Omis: tout le dessin. Exemple: "WALLS". | |
| limit | No | Nombre maximal d'entités décrites par nearest et in_window. Défaut 200, plafond dur 1000. Sans effet sur les autres modes, dont la réponse est déjà un résumé. | |
| point | No | Point de référence du mode nearest. Couple [x, y] dans l'unité du document. Exemple: [2.5, 1.5]. | |
| window | No | Fenêtre [xmin, ymin, xmax, ymax] du mode in_window, dans l'unité du document. Les deux coins peuvent venir dans n'importe quel ordre. Exemple: [0, 0, 10, 8]. | |
| window_mode | No | Mode de sélection par fenêtre, au sens d'AutoCAD. "inside" ne garde que ce qui tient entièrement dans la fenêtre, "crossing" garde aussi ce qui la traverse. Sur un plan, le premier rend les pièces d'une zone, le second rend en plus les murs qui la bordent. | inside |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), but the description adds genuinely new behavioral context: measurements are only counted for entities the engine publishes, each result carries counted/missing/complete, and totals are null rather than zero. That null-vs-zero semantics directly prevents a wrong agent inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and a per-mode bullet list that maps one-to-one onto the enum, followed by usage and honesty sections. Despite its length, every block carries information for a 7-parameter, 7-mode tool; nothing is restated from the schema verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return-value burden and does: it sketches what each mode returns (entity counts, layers, types, limits; cumulative length and area; one line per layer/type pair; nearest entities with distance). Combined with the usage and null-semantics notes, an agent has enough to select a mode and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all seven parameters, giving a baseline of 3. The description goes further by stating what question each mode enum value answers and by interpreting window_mode in drafting terms ("les pièces d'une zone" vs "les murs qui la bordent"), which is meaning the schema does not supply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Mesure et résume le dessin") and immediately states the scope ("sans l'énumérer"), which distinguishes it from query_entities. It explicitly names the two closest siblings (render_view, query_entities) and the conditions separating them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use triggers ("AVANT de modifier un dessin que vous n'avez pas produit", "APRÈS un lot pour vérifier des quantités") and routes the agent to alternatives: render_view "pour voir le dessin" and query_entities "pour obtenir les handles". This is textbook when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_blocksPlacer des blocs de la bibliothèqueA
Insère une LISTE d'occurrences de symboles normalisés en un seul lot: porte, fenêtre, WC, lavabo, douche, évier, prise, interrupteur, point lumineux, lits, table, chaise.
À utiliser pour équiper et meubler un plan, une fois les murs posés par build_structure. Un seul appel place tous les objets d'un logement: n'enchaînez pas un appel par objet.
Ce que cet outil apporte sur un tracé équivalent fait avec draw: une occurrence de bloc reste liée à SA définition, donc corriger le symbole une fois corrige toutes ses occurrences; chaque occurrence porte un attribut de repère, donc les objets se comptent et se chiffrent; et chaque symbole va sur le calque de sa nature, un WC sur PLUMBING, une prise sur ELECTRICAL, une chaise sur FURNITURE.
LES DÉFINITIONS MANQUANTES SONT CRÉÉES AUTOMATIQUEMENT, il n'y a rien à préparer. Une définition déjà présente est conservée telle quelle: le même appel répété n'écrase jamais un symbole existant.
Chaque symbole a son repère local, décrit dans la description de sa clé. Ce qui se pose contre un mur — porte, fenêtre, WC, lavabo, prise — a le mur pour axe X et la pièce du côté des Y positifs: rotation_deg à 0 pose l'objet contre un mur horizontal, la pièce au-dessus. Les longueurs sont réelles et suivent l'unité du document. La réponse porte les handles créés ET les échecs avec l'index de l'élément fautif. Vérifiez ensuite avec render_view.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Nom du lot, qui devient le libellé de la marque d'annulation. Un plan entier annulé redevient un seul geste. Exemple: "rez-de-chaussee". | place_blocks |
| blocks | Yes | Occurrences à insérer, dans l'ordre. Exemple: [{"block": "toilet", "at": [1.2, 0.1]}, {"block": "basin", "at": [2.4, 0.1], "mark": "LV1"}]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only cover safety and idempotency hints, but the description adds important behavior: missing block definitions are created automatically, existing definitions are preserved, repeated calls do not overwrite existing symbols, and the response contains created handles plus failures with the offending item index. It also tells the agent to verify with render_view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and usage, then moves through behavior and parameter nuances. It is fairly long and somewhat repetitive about automatic definition creation, but most sentences carry useful operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex batch insertion tool with no output schema, the description covers when to use it, what it creates, how repeated calls behave, how symbols are oriented, and what the response contains. Nothing essential for correct invocation appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3. The description still adds meaningful semantics beyond the schema, especially that each symbol has a local reference point and that wall-mounted objects use the wall as X axis with the room on positive Y for rotation_deg.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it inserts a list of normalized symbol occurrences in one batch. It also lists the symbol types and distinguishes the tool from draw and build_structure, so an agent can identify its role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool to equip and furnish a plan after walls are placed by build_structure, and warns against making one call per object. It also names draw as the comparable alternative and explains why place_blocks is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_entitiesInspecter les entitésARead-onlyIdempotent
Liste les entités du dessin qui satisfont un filtre, avec leur handle, leur type, leur calque, leur couleur et leur boîte englobante.
À utiliser pour retrouver ce qui existe déjà avant de modifier ou de supprimer: les handles renvoyés ici sont le préalable obligatoire à set_entity_color et à une suppression par handles.
La réponse est TOUJOURS bornée. Elle donne le compte total des entités correspondantes ET un échantillon limité, avec un drapeau indiquant si elle a été tronquée. Un dessin de cinquante mille entités ne sera jamais déversé: affinez le filtre plutôt que d'augmenter la limite.
Pour voir le dessin plutôt que de l'énumérer, utilisez render_view.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type DXF de l'entité, tel que renvoyé par query_entities dans le champ "type". Exemple: "LWPOLYLINE". | |
| color | No | Couleur: nom (blue, byblock, bylayer, cyan, gray, green, light_gray, magenta, red, white, yellow, ou les synonymes français rouge, vert, bleu, jaune, gris, blanc) ou index ACI entier de 0 à 256. Omise, l'entité suit son calque (ByLayer). Exemple: "red" ou 1. Attention: l'index 0 est ByBlock, pas noir; le noir du dessin technique est l'ACI 7, nommé "white". | |
| layer | No | Nom exact du calque, comparaison par nom entier et non par sous-chaîne. Exemple: "WALLS". | |
| limit | No | Nombre maximal d'entités décrites. Défaut 200, plafond dur 1000. Le compte total est rendu quoi qu'il arrive. | |
| window | No | Fenêtre rectangulaire [xmin, ymin, xmax, ymax] dans l'unité du document. Ne retient que les entités entièrement contenues. Exemple: [0, 0, 10, 8]. | |
| handles | No | Handles d'entités. Un handle s'obtient d'abord par query_entities ou dans la réponse de draw / build_structure; il n'est jamais deviné. Exemple: ["1F3", "1F4"]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered structurally. The description still adds real behavioral context beyond that: the response is ALWAYS bounded, always returns a total count plus a truncated sample with a flag, and the guidance to refine the filter instead of raising the limit. It does not discuss permissions or error behavior, but for a local read-only query that is a minor omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short paragraphs, front-loaded with what is returned and followed by usage, bounding behavior, and the sibling pointer. Each section earns its place, though the description is on the longer side for a single query tool and the bounding point is restated across two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing the return shape, and it does: handles, type, layer, color, bounding box, plus total count, truncated sample and a truncation flag. Combined with the usage and sibling guidance, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema, including the ACI color nuance and handle sourcing. The description adds only indirect guidance ('affinez le filtre'), not syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Liste les entités du dessin qui satisfont un filtre') and enumerates the returned fields (handle, type, calque, couleur, boîte englobante), so the agent knows exactly what this produces. It also explicitly distinguishes itself from render_view, which serves a different need.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ('retrouver ce qui existe déjà avant de modifier ou de supprimer') and states that the returned handles are a mandatory prerequisite for set_entity_color and handle-based deletion, naming those siblings. It also names the alternative for a different intent (render_view) with the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_viewVoir le dessinARead-onlyIdempotent
Rend le dessin courant en image PNG et renvoie cette image dans la réponse, accompagnée du nombre d'entités et des limites du dessin.
À appeler APRÈS CHAQUE LOT D'ÉCRITURE. C'est le seul moyen de vérifier ce qui a réellement été tracé au lieu de faire confiance à un compte rendu: un mur peut être créé avec succès et se trouver au mauvais endroit, à la mauvaise échelle ou superposé à un autre. Sans regarder, vous dessinez à l'aveugle.
À appeler aussi avant de corriger un dessin existant, pour savoir ce qu'il contient.
Le cadrage est automatique et centré sur le contenu; un dessin vide rend une image vide, ce qui n'est pas une erreur. Exige un moteur capable de rendu: le backend DXF le fait, le backend AutoCAD non, puisque l'écran d'AutoCAD tient ce rôle.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Largeur de l'image en pixels. Défaut 1600. | |
| height | No | Hauteur de l'image en pixels. Défaut 1200. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, it discloses framing behavior (auto-centered on content), an edge case (empty drawing yields an empty image, not an error), and a backend constraint (needs a render-capable engine; DXF yes, AutoCAD no). This is substantial context the annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation, then the usage directives, then runtime caveats. Four short paragraphs are all relevant, though the 'sans regarder, vous dessinez à l'aveugle' line is rhetorical padding rather than information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a render tool with no output schema, the description covers what is returned, how the image is framed, the empty-drawing edge case, and backend prerequisites. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both width/height are documented with defaults and bounds in the schema, so the description adds no parameter detail. Per the rubric, baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Rend le dessin courant en image PNG') plus the returned payload (image, entity count, drawing bounds). It implicitly separates itself from query/info siblings by positioning the render as the way to see what was actually drawn.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit triggers: call after every write batch, and before correcting an existing drawing. The rationale ('only way to verify what was actually traced instead of trusting a report') makes the when/when-not condition unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_cad_commandExécuter une commande AutoCADADestructive
DESTRUCTIF ET IRRÉVERSIBLE. Passerelle vers la ligne de commande d'AutoCAD: exécute une commande native du logiciel sur le dessin ouvert. undo_last_batch n'annule PAS ce que cette commande modifie, puisqu'elle n'est pas un lot de créations du serveur; seul l'annuler dans AutoCAD le peut.
À utiliser pour les transformations qu'AutoCAD sait déjà faire mieux qu'une réimplémentation: décaler un contour, ajuster ou prolonger des murs, raccorder deux traits, tracer un contour fermé autour d'un point. Commandes autorisées, et elles seules: ARRAY, BOUNDARY, CHAMFER, EXTEND, FILLET, HATCH, MIRROR, OFFSET, TRIM. Toute autre commande est refusée avec le code invalid_parameter et la liste ci-dessus: la liste blanche existe parce que transmettre une chaîne libre à un logiciel de CAO revient à exécuter du code arbitraire sur la machine de l'utilisateur.
INDISPONIBLE SUR LE BACKEND DXF, qui n'a pas d'interpréteur de commandes: l'appel échoue alors avec le code unsupported_operation, et c'est la situation normale hors d'un poste Windows où AutoCAD tourne. get_drawing_info dit dans can_run_commands si le moteur courant sait les exécuter: vérifiez-le avant de bâtir un plan là-dessus.
La commande est envoyée telle quelle: le dessin n'est pas relu pour vérifier ce qu'elle a fait. Regardez le résultat avec render_view.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Nom de la commande AutoCAD, sans espace ni préfixe. La casse est libre, la comparaison à la liste blanche se fait en majuscules. Exemple: "OFFSET". | |
| arguments | No | Réponses aux invites de la commande, dans l'ordre. Une commande laissée en attente d'une invite bloquerait AutoCAD: donnez toutes les réponses. Exemple pour un décalage de 0,2 : ["0.2", "2,1", "3,1", ""]. | |
| confirm_command | Yes | Obligatoire, et à true. Sans lui, l'appel est refusé avec le code confirmation_required. Ce drapeau existe parce que la commande agit directement sur le document de l'utilisateur et que le serveur ne sait pas la défaire. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Ajoute beaucoup au-delà des annotations destructive=true : irréversibilité, inopérance d'undo_last_batch, liste blanche de sécurité, codes d'erreur invalid_parameter/unsupported_operation/confirmation_required, envoi tel quel sans relecture, et vérification par render_view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
L'alerte destructrice est front-loadée et chaque paragraphe apporte une contrainte de sécurité ou d'usage. Le texte reste dense et long, avec quelques redondances possibles, mais rien ne semble gratuit pour un outil aussi dangereux.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sans schéma de sortie, la description couvre l'irréversibilité, les erreurs, la disponibilité selon le backend et la vérification du résultat. Elle contient tout ce qu'un agent doit savoir pour appeler l'outil correctement ou l'éviter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
La couverture du schéma est de 100 % et ses descriptions détaillent déjà casse, coordonnées, exemple et rôle de confirm_command. La description reprend surtout la liste blanche et l'exemple du schéma sans ajouter de sémantique paramètre vraiment nouvelle.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Décrit précisément une passerelle vers la ligne de commande AutoCAD qui exécute une commande native sur le dessin ouvert. Elle distingue l'outil de ses voisins en nommant undo_last_batch, get_drawing_info et render_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Donne explicitement les cas d'usage (transformations natives comme décaler, ajuster, raccorder) et les exclusions (backend DXF indisponible, commandes hors liste blanche refusées). Indique aussi de vérifier can_run_commands via get_drawing_info avant de bâtir un plan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_entity_colorChanger la couleur d'entitésA
Change la couleur d'une ou plusieurs entités désignées par leur handle.
À utiliser pour corriger une entité posée sur le bon calque mais dans la mauvaise couleur, sans avoir à l'effacer puis à la redessiner.
Les handles s'obtiennent d'abord par query_entities, ou dans la réponse de draw et build_structure: ils ne se devinent pas.
Pour rendre une entité à la couleur de son calque, passez "bylayer", ce qui est la convention du dessin technique. L'index 0 est ByBlock et non noir; le noir est l'ACI 7, nommé "white".
Chaque handle est traité séparément: la réponse indique lesquels ont été modifiés et lesquels ont échoué, avec la raison.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | Couleur: nom (blue, byblock, bylayer, cyan, gray, green, light_gray, magenta, red, white, yellow, ou les synonymes français rouge, vert, bleu, jaune, gris, blanc) ou index ACI entier de 0 à 256. Omise, l'entité suit son calque (ByLayer). Exemple: "red" ou 1. Attention: l'index 0 est ByBlock, pas noir; le noir du dessin technique est l'ACI 7, nommé "white". | |
| handles | Yes | Handles des entités à recolorer, obtenus par query_entities ou par un lot d'écriture. Exemple: ["1F3", "1F4"]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false. The description goes beyond them by disclosing per-handle partial-failure semantics ('la réponse indique lesquels ont été modifiés et lesquels ont échoué, avec la raison') and the 'bylayer' convention. It does not discuss permissions or reversibility, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then purpose, then handle sourcing, then color conventions, then response behavior. Efficient, though the ByBlock/ACI 7 caveat is duplicated from the schema, which costs a little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description appropriately explains the return behavior (which handles succeeded/failed and why). Handle provenance, color conventions, and partial-failure handling are all covered. Minor gaps like handle-count limits are only in the schema, but that is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters carry detailed descriptions, so the schema does the heavy lifting. The description's color guidance ('bylayer', index 0 = ByBlock, ACI 7 = 'white') largely repeats what the schema already states, adding little beyond it. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change la couleur d'une ou plusieurs entités') and scopes it precisely to entities designated by handle. It also names related siblings (query_entities, draw, build_structure) as the source of handles, so the agent can distinguish it from them without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('corriger une entité posée sur le bon calque mais dans la mauvaise couleur, sans avoir à l'effacer puis à la redessiner') and where the required handles come from, plus the clause that handles cannot be guessed. Nothing about selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_last_batchAnnuler le dernier lotADestructive
Annule le dernier lot d'écriture, c'est-à-dire le dernier appel à draw ou à build_structure, en supprimant les entités qu'il a créées.
À utiliser dès qu'un lot s'avère faux après l'avoir regardé avec render_view: c'est plus sûr que de supprimer à la main et cela ramène le dessin exactement à son état précédent.
Portée limitée, à connaître avant d'y compter: seules les CRÉATIONS sont annulées. Une couleur changée par set_entity_color et une entité supprimée par delete_entities ne sont pas restaurées. Les appels successifs dépilent les lots du plus récent au plus ancien; sans lot à annuler, l'appel échoue au lieu de ne rien faire silencieusement.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds substantive behavior beyond them: only creations are undone, colour changes and deletions are NOT restored, successive calls pop batches newest-to-oldest (stack semantics), and calling with no batch fails loudly instead of silently no-op'ing. That last point is exactly the kind of failure-mode disclosure annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then scope limits, then stack/error semantics – each paragraph earns its place. It runs slightly long for a nullary tool, but no sentence is filler given the non-obvious scope restrictions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no parameters, so the description carries the full burden and does: it covers what is reversed, what is not, ordering of repeated calls, and the failure mode. Nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to compensate for, and the schema's additionalProperties:false confirms the no-arg contract is intentional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Annule le dernier lot d'écriture') and immediately disambiguates by naming the exact operations it reverses ('le dernier appel à draw ou à build_structure'), plus the mechanism ('en supprimant les entités qu'il a créées'). An agent can distinguish it from delete_entities or set_entity_color without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('dès qu'un lot s'avère faux après l'avoir regardé avec render_view') and names the alternative it beats ('c'est plus sûr que de supprimer à la main'). It also names render_view as the required verification step, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v0.2.0- First observed
build_structure - First observed
check_plan - First observed
delete_entities - First observed
draw - First observed
get_drawing_info - First observed
measure - First observed
place_blocks - First observed
query_entities - First observed
render_view - First observed
run_cad_command - First observed
set_entity_color - First observed
undo_last_batch
TDQS
Scored across 12 tools
Most tools have clearly distinct purposes, and the descriptions explicitly disambiguate the three batch-write tools (draw for raw geometry, build_structure for architectural elements, place_blocks for symbols) and the three read tools (get_drawing_info, query_entities, measure). The main residual overlap is among the write/creation tools, which an agent must read carefully to pick correctly, but the guidance is strong enough to avoid misselection.
Names follow a mostly predictable verb_noun pattern (get_drawing_info, query_entities, set_entity_color, delete_entities, build_structure, place_blocks, undo_last_batch, run_cad_command). A few deviate with single bare verbs (draw, measure) or verb_noun phrasing that doesn't fit the resource-action mold (render_view, check_plan), but the overall convention is readable and consistent.
12 tools is well-scoped for a CAD server spanning read, write, modify, validate, and render operations. Each tool earns its place, and related actions are consolidated into batches or single multi-mode tools (measure) rather than exploding the count.
The surface covers the full lifecycle well: document inspection, entity querying, measurement, rendering, batch creation at three abstraction levels, color editing, deletion, undo, and validation via check_plan. The notable gap is direct transformation of existing entities (move/rotate/scale/copy), which is only reachable through the limited native run_cad_command whitelist or full delete-and-redraw.
Maintenance
Related MCP Connectors
DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.
AI Hub for AEC — 50+ 3D formats, clash detection, ACC integration via Autodesk Platform Services.
Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.
Construction takeoff and estimating for AI agents. Measure a drawing PDF, export a priced estimate.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables automated CAD operations via natural language, supporting both AutoCAD LT on Windows and headless DXF generation on any platform.8MIT
- AlicenseBqualityBmaintenanceEnables AI agents to automate AutoCAD LT and create DXF files headless, with tools for drawing, entity, layer, block, annotation, PID, and system operations.16MIT
- AlicenseBqualityCmaintenanceEnables AI agents to drive AutoCAD 2024+ and AutoCAD LT through live COM and AutoLISP engines, with support for headless DXF processing, ISO GD&T, P&ID drafting, and Rhino.Inside Grasshopper battery workflows.162MIT
- FlicenseBqualityBmaintenanceEnables architects to control AutoCAD 2021-2026 on macOS and Windows through natural language, allowing drawing and editing of architectural plans, checking compliance with standards, and generating construction documents.15-