quality-control-plan-mcp
Quality Control Plan MCP Server
Generate quality control plans and inspection reports from technical-drawing PDFs — from any MCP-enabled assistant.
This Model Context Protocol server exposes the engine behind quality-check-protocol.imnoo.com (by Imnoo). Need a quality control plan for a technical drawing? Hand the PDF to your assistant and get a numbered inspection plan in about a minute: every dimensional tolerance, ISO fit, thread, geometric tolerance (GD&T) and surface finish is extracted automatically by Imnoo's drawing analysis, ballooned on the drawing and listed with its acceptance limits — ⌀50 ±0.05 becomes 49.95–50.05 — and a measuring instrument. Ask for an inspection class (100 % full inspection, Q1 reduced, Q2 spot check), keep the balloon numbers printed on the drawing or renumber them (1, 001 or D001 style, in reading or measurement order), then let it write the ballooned drawing, the complete inspection package or the Excel measurement and inspection report — the same documents the Imnoo calculator produces. It covers first-article inspection, PPAP-style dimensional reports and shop-floor quality check protocols, on vector and scanned PDFs alike. Built by Imnoo, the planning, scheduling and quoting platform for CNC manufacturers — where the same quality check protocols come out of every quote, next to cost estimation, manufacturing plans and G-code generation.
"Create a Q1 quality plan for flange.pdf with type-prefixed balloon numbers"
│
▼ (your assistant calls the tools)
analyze_drawing ──► build_quality_plan ──► export_inspection_pdf + export_quality_plan_excel
│
▼
QP-1001-A_inspection-package.pdf D001 ⌀50 (±0.05) 49.95–50.05 Caliper
QP-1001-A_Q1.xlsx H001 ⌀10 H7 — Inside micrometer
G001 ⏥ 0.05 — CMMTools
Tool | What it does |
| Uploads a drawing PDF (vector or scanned, ≤ 30 MB) to Imnoo's drawing analysis — the service behind the web app — and returns every detected characteristic with type, value, PDF page, position, confidence and the balloon number printed on the drawing, plus the title block (drawing / article number, material, general tolerance). |
| Opens a saved analysis JSON. Fully offline — no upload, no daily credit. |
| Turns the analysis into the plan: balloon numbers (numeric, |
| Writes the Measurement and inspection report workbook: header block (article, ET-No., batch, inspection rate), visual-inspection checklist a–e, dimensional-conformity table (Insp. dim. no. · nominal dimension or thread size · tolerance range · measuring instrument · actual dimension · deviation · date · inspector), change-tracking footnotes and the special-release / signature block. Cell for cell the report the Imnoo calculator produces. |
| Writes the ballooned drawing ( |
Plus a create-quality-plan prompt that walks the assistant through analyze → review → export.
Where the analysis runs. analyze_drawing is the only tool that leaves your machine: it uploads the PDF to Imnoo's drawing analysis exactly like the web app does — 1 free analysis per day per IP address (more when signed in), uploaded files are deleted automatically after a short retention period, nothing else is stored. Everything after that — plan building, numbering, acceptance limits, Excel and PDF generation — runs locally and offline.
Related MCP server: Visual Document Forensics MCP Server
Installation
Requires Node.js ≥ 18.
Claude Code
claude mcp add quality-control-plan -- npx -y quality-control-plan-mcpClaude Desktop
Add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"quality-control-plan": {
"command": "npx",
"args": ["-y", "quality-control-plan-mcp"]
}
}
}Cursor
Add to Cursor — or add to ~/.cursor/mcp.json:
{
"mcpServers": {
"quality-control-plan": {
"command": "npx",
"args": ["-y", "quality-control-plan-mcp"]
}
}
}VS Code (GitHub Copilot)
code --add-mcp '{"name":"quality-control-plan","command":"npx","args":["-y","quality-control-plan-mcp"]}'Windsurf / other stdio clients
Any client that launches stdio servers works with:
npx -y quality-control-plan-mcpConfiguration (optional)
Variable | Purpose |
| Your Imnoo account token (the id token of your quality-check-protocol.imnoo.com login) — raises the daily analysis limit to your plan's quota. |
| Point the analysis at another deployment of the web app (default |
Example session
You: Build a Q1 quality plan for
C:\drawings\flange.pdfwith type-prefixed numbers and write everything next to the drawing.Assistant: calls
analyze_drawing— 17 characteristics on 2 pages: 5 dimensional tolerances, 2 drill fits (⌀10 H7 carries the printed balloon 1), 1 shaft fit, 2 threads, 1 fine thread, 2 geometric tolerances, 4 surface finishes; drawing QP-1001-A, article 4711-050, AlMg3, ISO 2768-mK. callsbuild_quality_planwithinspection_class: "Q1"andnumbering: { style: "typePrefixed" }— D001 ⌀50 (±0.05) → 49.95–50.05 (Caliper), H001 ⌀10 H7 (Inside micrometer), G001 ⏥ 0.05 (CMM), R001 Ra 3.2 (Surface roughness gauge)… callsexport_inspection_pdfandexport_quality_plan_excelwith the same plan — wroteQP-1001-A_inspection-package.pdf(both drawing pages ballooned + the printed plan) andQP-1001-A_Q1.xlsx. Two values on page 2 were read with low confidence — worth a glance before the plan goes to the shop floor.
Those numbers are the bundled sample drawing the smoke test runs against; real drawings vary.
Plan options (the plan argument)
One object, accepted by build_quality_plan and both export tools — pass the same one everywhere so the documents match the reviewed plan. Everything is optional; the defaults reproduce the web app's initial plan.
Option | Values |
|
|
|
|
| restart the counter for every characteristic type |
| e.g. |
|
|
|
|
|
|
| title-block values to print when the analysis missed them (article / drawing number, material, general tolerance, article name, revision) |
| measuring instrument per type — defaults: CMM, thread plug gauge, caliper, inside / outside micrometer, depth caliper, surface roughness gauge |
| per characteristic (by |
| Excel checklist toggle, leader arrows on the drawing, an "INSPECTION DRAWING" stamp block (revision, note) |
How the plan is derived
Acceptance limits exist for plain dimensional tolerances with a numeric nominal (nominal + lower / upper deviation, rounded to 2 decimals). Fits, threads, geometric tolerances and surface finishes are gauged rather than measured against limits — the same rule as the Imnoo calculator.
Balloon numbers are derived from the selection and the numbering settings, so dropping a characteristic renumbers the rest automatically; a number printed on the drawing is kept in
customorder.A measured
samplesvalue is judged pass / fail against the limits; results and dates appear in both documents.The default section order is the measurement workflow: geometric tolerances (CMM) first, surface finishes (roughness gauge) last.
Limitations
The drawing analysis is automated: it can miss or misread characteristics, especially on low-quality scans — verify the plan against the drawing (
rows[].valuecorrects a value,excludedrops a row).Free tier: 1 analysis per day per IP address; PDFs up to 30 MB. Saved analyses (
save_analysis_to→load_analysis) are unlimited and offline.Hand-drawn characteristics, dragging balloons and saving the plan into the Imnoo calculator are features of the web app only.
Encrypted or unusual PDFs that cannot be copied fall back to
variant: "plan"here (the web app rasterises them instead).
Development
This package is built from the Quality Check Protocol monorepo at Imnoo, where it imports the web app's domain layer directly (drawing mapper, plan math, numbering engine, Excel and PDF builders) — so the web app and this server produce identical plans and documents by construction. Every release is gated on 61 end-to-end checks that drive all five tools over stdio against the bundled sample drawing.
Issues and feature requests are welcome in this repository.
About Imnoo
Imnoo — The System for Manufacturers | AI Planning, Scheduling & Quoting · Complete Assemblies · DFM · Tool & Material Libraries · Quoted-Parts Database · Toolpath & G-Code · Machine Connection · Webshop · ERP · Shop Analytics & Optimization · Drawing Masking & IP Security
Plan It. Schedule It. Quote It. Win It. — trusted by over 3,000 manufacturers.
Imnoo is the AI-powered planning, scheduling, and quoting platform for CNC manufacturers — your automatic production platform. One system that covers it all: automatic manufacturing planning with raw-material, catalog and purchase-part, and subcontracting sourcing; scheduling with smart reminders and AI-driven customer workflows; and AI cost and cycle-time estimation for milling, turning, and EDM — even from a 2D PDF alone. Quote complete assemblies: drop in one file and Imnoo explodes it into single parts automatically — with DFM checks, quality protocols, tolerance extraction and 2D-to-3D matching, toolpath and G-code generation, tool and machine recommendations, and connected machines feeding real production data back into every quote. Built on your own tool and material libraries and a growing database of every part you've ever quoted — powering statistics, benchmarks, and shop optimization. Extends to deep hole drilling, sheet metal, casting, and profile parts — with a 24/7 webshop, built-in ERP, hourly-rate calculation, market-price benchmarking, and imperial ⇄ metric conversion. Your data lives in its own physically separated environment — automatic drawing masking, Swiss hosting, end-to-end encryption. From messy RFQ to production-ready order, on one platform.
Planning
Automatic manufacturing planning — production plans generated straight from the quote.
Machine recommendation — every job routed to the machine that runs it best.
Catalog & purchase part management — norm parts, screws, and bought-in components recognized straight from the BOM, managed and priced alongside your machined parts.
Raw material sourcing — price, source, and order material without leaving the workflow.
Purchase part & external step sourcing — bought-in components, coating, heat treatment, and subcontracting sourced and ordered in the same flow.
Beyond milling & turning — deep hole drilling, sheet metal, casting, and profile parts.
Scheduling & Workflow
Scheduling & smart reminders — via email, Telegram, or WhatsApp. Nothing slips.
Email-to-quote automation — a messy inbox in, structured quotes out.
AI customer agents — RFQ answers, clarifications, and follow-ups handled automatically.
Built-in lightweight ERP — orders, companies, payment terms, and margins without the bulky software.
Quoting & Estimation
Complete assemblies, exploded automatically — upload one assembly file and Imnoo blows it out into single parts: every component recognized, drawings matched to the right parts, sub-assemblies nested, purchase parts pulled from the BOM. Quote the whole machine as easily as one part.
CNC quoting in one place — milling, turning, and EDM jobs quoted from a single AI-powered platform.
AI cost & cycle-time estimation — know price, time, and effort before engineering ever looks at it.
Drawing-only estimation — quote from the PDF alone. No 3D model needed.
Feature-by-feature costing — see exactly which holes, pockets, and tolerances drive the price.
Instant quotes — respond in minutes while competitors are still opening the STEP file.
24/7 instant-quoting webshop — customers upload parts and buy while you sleep.
Instant market-price benchmarking — know where your bid stands before you send it.
Hourly-rate calculation — your true machine and labor rates, always current.
Imperial ⇄ metric conversion — international RFQs without manual cleanup.
Libraries & Insights
Tool library — your cutting tools, holders, and parameters in one managed catalog.
Material library — standard and custom materials with live supplier pricing.
Quoted-parts database — every part you've ever quoted, searchable by geometry: similar part found, price found.
Statistics & analytics — win rates, margins, throughput, and quoting performance at a glance.
Shop optimization — learn from already-quoted parts to sharpen prices, spot profitable niches, and load the right machines.
Drawing Intelligence
DFM — Design for Manufacturing — manufacturability checked before you quote: undercuts, thin walls, unreachable features, and impossible tolerances flagged with the part still on the screen.
Quality check protocols — inspection plans generated automatically: stamped and numbered drawing features, inspection classes and rates, ready-to-use measurement reports.
Axis & orientation detection — AI finds the best part orientation and machining axes.
Automatic tolerance extraction — critical tolerances pulled straight off the drawing.
2D-to-3D tolerance matching — drawing requirements linked to the right model features.
CAM & Shop Intelligence
AI tool recommendation — stop searching catalogs: Imnoo suggests the exact cutting tools for every feature.
Automatic toolpath generation — from quote to machining strategy in one step.
G-code generation & estimation — generate and evaluate programs before work hits the floor.
Machine connection — your machines feed real production data back into the AI. Every quote gets smarter.
IP Protection & Data Security — Engineered Like a Swiss Vault
Physically separated data — every manufacturer runs in its own isolated environment. Your drawings, prices — never pooled with anyone else's: not for storage, not for AI training.
Automatic drawing masking & redaction — customer names, logos, and confidential data hidden before a drawing ever leaves your workflow. Share with suppliers and subcontractors without exposing whose part it is.
Your customers' IP, treated like your own — end customers' designs stay within your tenant, full stop.
Swiss hosting & end-to-end encryption — data sovereignty and security engineered to Swiss standards.
Trusted at scale — over 3,000 manufacturers run their quoting on Imnoo.
Quote the complete job — not just the spindle time.
License
MIT © Imnoo AG
Available Tools
5 toolsanalyze_drawingAnalyse a drawing PDF (Imnoo drawing analysis)A
Upload a technical-drawing PDF to Imnoo's drawing analysis and return every inspection characteristic it detects — dimensional tolerances (⌀50 ±0.05, 12 +0.2/-0.1), ISO fit classes (H7 drills, g6 shafts), threads and fine threads, geometric tolerances (GD&T frames) and surface finishes (Ra/Rz) — each with a feature id, value, PDF page, position and the balloon number printed on the drawing when there is one, plus the title block (drawing/article number, material, general tolerance). Analysis takes roughly 20–120 s; the call waits up to timeout_seconds and otherwise returns status "processing" with the drawing_id to resume with. analyze_drawing uploads the PDF to Imnoo's drawing analysis (the service behind the web app): 1 free analysis per day per IP address, more when signed in; uploaded files are deleted automatically after a short retention period and nothing else is stored. Use save_analysis_to to keep the analysis JSON for offline reuse with load_analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| pdf_path | No | path to the drawing PDF to analyse (vector or scanned, ≤ 30 MB) | |
| drawing_id | No | instead of pdf_path: the drawing_id of an earlier upload that returned status "processing" — keeps waiting for it without a new upload | |
| timeout_seconds | No | how long to wait for the analysis before returning "processing" (default 180) | |
| save_analysis_to | No | write the analysis JSON to this path (re-open it later with load_analysis, no upload needed) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (openWorldHint, non-idempotent), the description discloses latency (20–120 s), timeout semantics (waits up to timeout_seconds, else returns "processing" with a drawing_id), rate limits, and the privacy/retention behaviour of uploaded files. These are exactly the traits an agent needs before committing to a slow, non-idempotent upload.
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 extraction payload and then the operational constraints, and every clause carries information. Minor waste: the second sentence opens by restating 'analyze_drawing uploads the PDF to Imnoo's drawing analysis' before pivoting to the new rate-limit and retention facts, and the long characteristic enumeration is dense.
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 full return-value burden — and it does: per-characteristic feature id, value, PDF page, position and balloon number, plus the title block fields, and the "processing" fallback state. Combined with the timeout and resume mechanics, nothing needed to call or interpret this tool 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 baseline is 3; the description goes further by explaining the consequence of timeout_seconds (returning "processing" rather than failing), the resume semantics of drawing_id, and the offline-reuse purpose of save_analysis_to. It adds genuine meaning beyond the field descriptions, though it does not restate size/type limits.
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 names a specific verb and resource (analyse a technical-drawing PDF) and enumerates exactly what is extracted: dimensional tolerances, ISO fit classes, threads, GD&T frames, surface finishes, plus title-block fields. This is far more specific than any sibling (load_analysis, build_quality_plan, export_*), so an agent can select it unambiguously.
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 states the two entry paths explicitly: upload via pdf_path, or resume an in-flight analysis via drawing_id when a prior call returned status "processing". It also routes to alternatives by name — save_analysis_to/load_analysis for offline reuse — and flags the rate-limit condition (1 free analysis/day per IP, more when signed in).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_quality_planBuild the quality control planARead-only
Turn an analysed drawing into the quality control plan the documents will print: one row per characteristic with its balloon number (numeric, padded or type-prefixed; printed drawing numbers kept by default), acceptance limits computed from nominal ± tolerance (dimensional tolerances only — fits, threads, GD&T and surface finishes are judged with gauges), the default measuring instrument per type, the inspection class/rate, and the section order. Deterministic and offline: adjust the plan options and call again until the plan is right, then pass the same options to the export tools.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | Plan settings — shared by build_quality_plan and both export tools; pass the same object to every call so the documents match the reviewed plan. Everything is optional; defaults reproduce the web app's initial plan. | |
| drawing_id | Yes | from analyze_drawing or load_analysis |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false, and the description corroborates with 'deterministic and offline' plus the iterate-then-export workflow, making clear the call is a non-persisting preview that is safe to repeat. It does not add auth, rate, or side-effect detail beyond that, but the annotation-consistent framing is genuinely useful.
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?
Two sentences, front-loaded with the output and its distinguishing scope, with the workflow constraint second. The first sentence is dense with enumerated plan contents but each clause maps to real behavior rather than 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 tool with a large nested options object and no output schema, the description explains what the plan contains and that it is deterministic/reproducible, and points to drawing_id's provenance via analyze_drawing/load_analysis. It never sketches the returned plan shape, which is the only real gap.
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 every field; the description adds value by framing the plan object as 'shared by build_quality_plan and both export tools' and summarizing what the options drive (balloon numbering, computed acceptance limits, default instruments, class/rate, section order). It stops short of adding syntax or format detail beyond the schema.
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 ('turn an analysed drawing into the quality control plan') and immediately scopes it as the plan 'the documents will print', which separates it from the sibling export tools that render that plan. An agent can tell what it produces 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?
Gives an explicit workflow: 'adjust the plan options and call again until the plan is right, then pass the same options to the export tools', which positions it as the step before the export siblings. It does not name the export tools explicitly or state when not to use it, so it falls short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_inspection_pdfExport the ballooned drawing / inspection package PDFAIdempotent
Write the inspection PDF. variant "package" (default): the original drawing pages with translucent boxes on every selected characteristic, numbered balloons and optional leader arrows, followed by the printed plan (general-information form, feature table with colored number chips, instrument and sample fill-in lines, acceptance criteria and result checkboxes, final approval). "ballooned": the marked-up drawing pages only. "plan": the plan document only (no drawing pages, no PDF needed). The source PDF is never modified. Default location: next to the drawing PDF as _inspection-package.pdf / _ballooned.pdf / _quality-plan.pdf.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | Plan settings — shared by build_quality_plan and both export tools; pass the same object to every call so the documents match the reviewed plan. Everything is optional; defaults reproduce the web app's initial plan. | |
| variant | No | default package | |
| pdf_path | No | the original drawing PDF when the server does not know it yet (load_analysis without pdf_path) | |
| overwrite | No | allow replacing an existing file | |
| drawing_id | Yes | from analyze_drawing or load_analysis | |
| output_path | No | target .pdf path, or a directory (default: next to the drawing PDF, else the working directory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false with destructiveHint=false and idempotentHint=true, and the description usefully reinforces this with "The source PDF is never modified" plus the default write location and derived filenames. It adds real behavioral context beyond the annotation flags, though it does not mention what happens on a filename collision or what it returns.
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 core action is front-loaded in the first clause and the remaining sentences each carry distinct information about the variants and the untouched source file. It is dense rather than bloated, though the run-on variant sentence with quoted labels is harder to scan than a short list would be.
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 write tool with a large nested plan object, the description covers the highest-risk ambiguity (which PDF you get) and the source-file safety guarantee. With no output schema, the one remaining gap is that it never says what the call returns or how to reference the written file, which an agent would need for a follow-up step.
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 genuine value by spelling out what each variant actually renders and by giving the output filename convention per variant (<drawing number>_inspection-package.pdf / _ballooned.pdf / _quality-plan.pdf), which the schema only alludes to via 'default package'.
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 opening "Write the inspection PDF" gives a specific verb+resource, and the three variant descriptions pin down exactly what artifacts are produced (marked-up drawing pages, plan document, or both). It does not, however, distinguish this tool from its sibling export_quality_plan_excel, leaving the agent to infer the PDF-vs-Excel split from names alone.
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?
The description explains what each variant outputs but never states when to choose this tool over build_quality_plan or export_quality_plan_excel, nor any prerequisites beyond the optional pdf_path note. Variant selection guidance is present, but tool-selection guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_quality_plan_excelExport the Excel measurement and inspection reportAIdempotent
Write the quality plan as the "Measurement and inspection report" workbook (.xlsx): headline with the inspection class, header block (article name, ET-No., batch number, inspection rate), the visual-inspection checklist (a–e), the dimensional-conformity table (Insp. dim. no. · nominal dimension or thread size · tolerance range · measuring instrument · actual dimension · deviation · date · inspector), change-tracking footnotes and the special-release/signature block — cell for cell the report the Imnoo calculator produces. Default location: next to the drawing PDF as _.xlsx.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | Plan settings — shared by build_quality_plan and both export tools; pass the same object to every call so the documents match the reviewed plan. Everything is optional; defaults reproduce the web app's initial plan. | |
| overwrite | No | allow replacing an existing file | |
| drawing_id | Yes | from analyze_drawing or load_analysis | |
| output_path | No | target .xlsx path, or a directory (default: next to the drawing PDF, else the working directory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a non-read-only, idempotent, non-destructive, closed-world write, so the safety profile is covered. The description adds genuine behavioral value by detailing what ends up cell-for-cell in the workbook, but says nothing about whether the drawing/PDF files are touched, what happens if the target file already exists (that is schema-only), or what the call returns (e.g. the written path).
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?
One front-loaded sentence opens with the verb and artifact, then spends the rest on a concrete manifest of report contents; a short second sentence covers the default location. The column enumeration is long but defensible since it defines the deliverable, and there is no boilerplate 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 complex, nested-schema export tool with no output schema, the description conveys what the generated artifact contains, its naming convention, and its default location, which is what an agent needs before invoking. It is slightly short on cross-tool sequencing (analyze/load → build_quality_plan → export) and on the return value.
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 including the deeply nested plan object is already documented at source; the description does not need to compensate. It adds only the path-convention detail (<drawing number>_<inspection class>.xlsx) which partially overlaps the output_path description, so it does not meaningfully exceed the schema.
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 artifact — write the quality plan as the "Measurement and inspection report" workbook (.xlsx) — and enumerates the exact sections produced. The Excel-vs-PDF distinction from export_inspection_pdf is implied by the format and content but the sibling is never named, so an agent must infer the routing.
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?
Usage is only implied: you call this when you want the report as a spreadsheet. There is no explicit statement of when to prefer this over export_inspection_pdf, no prerequisite about having a plan built first, and no note on when overwriting is appropriate (that lives only in the schema). The default-location sentence is the only concrete operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_analysisOpen a saved drawing analysis (offline)ARead-only
Open a drawing analysis JSON saved earlier (analyze_drawing with save_analysis_to, or the Imnoo FileStore analysis document) and register it as a drawing for the plan and export tools. Fully offline — no upload, no daily credit. Pass pdf_path as well so the drawing exports can draw on the original PDF and write next to it.
| Name | Required | Description | Default |
|---|---|---|---|
| pdf_path | No | path to the matching drawing PDF (needed for the ballooned/package PDF exports) | |
| drawing_id | No | id to register the drawing under (default: the analysis id, else the file name) | |
| analysis_path | Yes | path to the analysis JSON |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false; the description reinforces this with 'Fully offline — no upload, no daily credit,' which is genuine cost/side-effect context beyond the annotations. It notes the registration side effect on plan/export tools, though it doesn't detail what happens on a duplicate or invalid analysis.
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?
Three tight sentences, front-loaded with the core action, then the offline/cost note, then the pdf_path tip. No padding, though the middle sentence interrupts the primary how-to flow slightly.
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 read/register tool with no output schema and full schema coverage, the description covers source formats, prerequisites, cost profile, and the optional-but-advised pdf_path. It lacks detail on error behavior (missing/invalid analysis file) and the exact return, but annotations carry the safety profile and nothing essential to invoking it 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?
Schema description coverage is 100%, so all three parameters are already documented in the schema. The description adds the rationale for pdf_path (needed for ballooned/package PDF exports and writing next to the original), which slightly exceeds the schema, but the baseline for full schema coverage is 3.
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 (open/register) with the resource (a previously saved analysis JSON), and explicitly distinguishes the two source formats (analyze_drawing save output vs. Imnoo FileStore analysis document). It also names the downstream effect — registering as a drawing usable by plan and export tools — which separates it from the analyze_* sibling.
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 a clear precondition (an analysis saved earlier via analyze_drawing with save_analysis_to) and the alternative source. It also advises passing pdf_path so exports work. However, it does not state when NOT to use this tool versus re-running analyze_drawing, so exclusions are implicit.
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.
5 tool updates
v0.1.0- First observed
analyze_drawing - First observed
build_quality_plan - First observed
export_inspection_pdf - First observed
export_quality_plan_excel - First observed
load_analysis
TDQS
Scored across 5 tools
Each tool targets a distinct stage of one pipeline: extract characteristics (analyze_drawing), register an offline copy (load_analysis), assemble the plan (build_quality_plan), and emit documents (export_quality_plan_excel, export_inspection_pdf). The two export tools are cleanly separated by output format, and analyze_drawing vs load_analysis are distinguished as online upload vs fully offline registration.
All five names follow a consistent verb_noun snake_case pattern (analyze_drawing, load_analysis, build_quality_plan, export_quality_plan_excel, export_inspection_pdf). The two export tools share the export_ prefix, making the set predictable.
Five tools map exactly onto the natural workflow (ingest → register → build → export in two formats), each earning its place with no redundancy. This is a well-scoped, right-sized surface for the domain.
The surface covers the full lifecycle from drawing analysis through plan construction to Excel/PDF output, and build_quality_plan is re-callable to iterate on options. Minor gaps exist — no tool to list, manage, or delete previously registered drawings/analyses, and no direct way to edit individual characteristics without rebuilding.
Maintenance
Related MCP Connectors
Construction takeoff and estimating for AI agents. Measure a drawing PDF, export a priced estimate.
- AgineraOAuthai.aginera
Turn construction drawings into takeoffs, measured routes, schedules and estimates.
- DatanemOAuthcom.datanem
Turn PDFs, scans and photos into a queryable database. Invoices, CVs, receipts, in bulk.
PDF accessibility checks (veraPDF PDF/UA-1), auto-fix and Markdown conversion. EU-hosted.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI-powered extraction and analysis of PDF documents with 40+ specialized tools for text, tables, images, layout analysis, security assessment, and document intelligence. Supports both text-based and scanned PDFs with OCR capabilities.10MIT
- FlicenseNot gradedqualityBmaintenanceEnables deterministic visual and structural analysis of PDF and DOCX documents, extracting measurable evidence such as blur, OCR confidence, and image anomalies for auditable forensic workflows.1-
- AlicenseAqualityBmaintenanceConvert technical-drawing PDFs and engineering callouts between metric and imperial — values stamped in place, threads cross-referenced, shop-floor rounding.5MIT
- AlicenseNot gradedqualityCmaintenanceConverts architectural PDF plans into dimension-verified millimetre geometry, IFC models, and CPU-rendered views, with built-in validation for boundaries, areas, and overlaps.MIT