MCP Server

Aspicio

io.github.frontsail-ai/aspicio
Design & Creative Science & Engineering Public & reachable MCP 2025-11-25

What this MCP does

Describes, renders, and interactively views DXF and vector PDF technical drawings, including layers, entities, dimensions, and extracted text.

describe_doc
Describe a drawing of any supported format
Return a structured JSON summary of a drawing in any supported format (DXF or PDF), detected from its bytes rather than its name. Use this when you do not know which format you have; the reply names the format that was read. Covers the whole drawing by default, including every page of a multi-page PDF; pass `space` (a name from the reply's `spaces`) to scope it to one page or sheet. When the user wants to see or explore the drawing themselves, prefer view_dxf (interactive viewer) — if your platform gates it behind user approval, offer it and ask rather than substituting a static render.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source'], 'properties': {'space': {'type': 'string', 'description': 'Which space to work on: "Model" (a PDF\'s page 1, a DXF\'s model space) or a page/layout name as listed in a describe reply\'s "spaces". Describe omits it for the whole drawing; render defaults to the first space.'}, 'source': {'type': 'string', 'description': 'A publicly reachable http(s) URL, or inline DXF text. A PDF is binary, so it must be a URL — inline PDF bytes are refused. (This is a hosted server — local file paths are not available; use the npx @aspicio/mcp local server for files on disk.)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['format', 'units', 'bounds', 'size', 'space', 'entityCount', 'segmentCount', 'spaces', 'layers', 'entityTypes', 'unsupported', 'texts'], 'properties': {'size': {'anyOf': [{'type': 'object', 'required': ['width', 'height'], 'properties': {'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Bounding-box size in drawing units, null when empty'}, 'space': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Which space this summary is scoped to, or null when it covers the whole drawing (bounds/size then describe spaces[0], the space render returns)'}, 'texts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Unique TEXT/MTEXT strings, blocks included'}, 'units': {'type': 'string', 'description': 'Drawing-unit label (e.g. "mm"), "" when unitless'}, 'bounds': {'anyOf': [{'type': 'object', 'required': ['minX', 'minY', 'maxX', 'maxY'], 'properties': {'maxX': {'type': 'number'}, 'maxY': {'type': 'number'}, 'minX': {'type': 'number'}, 'minY': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'World-space extents, null for an empty drawing'}, 'format': {'type': 'string', 'description': 'Which format was read ("dxf", "pdf")'}, 'layers': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'entityCount', 'visible', 'color'], 'properties': {'name': {'type': 'string'}, 'color': {'type': 'string', 'description': 'The color actually drawn (dominant), as #rrggbb'}, 'visible': {'type': 'boolean'}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}, 'spaces': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'entityCount', 'segmentCount', 'bounds', 'size'], 'properties': {'name': {'type': 'string', 'description': 'Pass as `space` to scope a describe or render to it'}, 'size': {'anyOf': [{'type': 'object', 'required': ['width', 'height'], 'properties': {'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'bounds': {'anyOf': [{'type': 'object', 'required': ['minX', 'minY', 'maxX', 'maxY'], 'properties': {'maxX': {'type': 'number'}, 'maxY': {'type': 'number'}, 'minX': {'type': 'number'}, 'minY': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'segmentCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'description': "Every space in the drawing (a PDF's pages, a DXF's model space and layouts), model space first. These do not sum to entityCount: a DXF sheet's viewports re-show model geometry, so an entity can be drawn in two spaces while existing once"}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'entityTypes': {'type': 'object', 'description': 'Top-level entities per DXF type', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'unsupported': {'type': 'object', 'description': 'Per-kind counts of what was skipped', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'segmentCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
describe_dxf
Describe a DXF drawing
Return a structured JSON summary of a DXF drawing — units, bounding box, layers (with the color actually drawn), per-type entity counts, and any skipped/unsupported types. Use this to answer structural questions (what layers exist, how many parts, what size, is it to scale) without rendering an image. For a PDF use describe_pdf; if you do not know the format, use describe_doc. Covers the whole drawing by default, including every page of a multi-page PDF; pass `space` (a name from the reply's `spaces`) to scope it to one page or sheet. When the user wants to see or explore the drawing themselves, prefer view_dxf (interactive viewer) — if your platform gates it behind user approval, offer it and ask rather than substituting a static render.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source'], 'properties': {'space': {'type': 'string', 'description': 'Which space to work on: "Model" (a PDF\'s page 1, a DXF\'s model space) or a page/layout name as listed in a describe reply\'s "spaces". Describe omits it for the whole drawing; render defaults to the first space.'}, 'source': {'type': 'string', 'description': 'A publicly reachable http(s) URL, or inline DXF text. A PDF is binary, so it must be a URL — inline PDF bytes are refused. (This is a hosted server — local file paths are not available; use the npx @aspicio/mcp local server for files on disk.)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['format', 'units', 'bounds', 'size', 'space', 'entityCount', 'segmentCount', 'spaces', 'layers', 'entityTypes', 'unsupported', 'texts'], 'properties': {'size': {'anyOf': [{'type': 'object', 'required': ['width', 'height'], 'properties': {'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Bounding-box size in drawing units, null when empty'}, 'space': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Which space this summary is scoped to, or null when it covers the whole drawing (bounds/size then describe spaces[0], the space render returns)'}, 'texts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Unique TEXT/MTEXT strings, blocks included'}, 'units': {'type': 'string', 'description': 'Drawing-unit label (e.g. "mm"), "" when unitless'}, 'bounds': {'anyOf': [{'type': 'object', 'required': ['minX', 'minY', 'maxX', 'maxY'], 'properties': {'maxX': {'type': 'number'}, 'maxY': {'type': 'number'}, 'minX': {'type': 'number'}, 'minY': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'World-space extents, null for an empty drawing'}, 'format': {'type': 'string', 'description': 'Which format was read ("dxf", "pdf")'}, 'layers': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'entityCount', 'visible', 'color'], 'properties': {'name': {'type': 'string'}, 'color': {'type': 'string', 'description': 'The color actually drawn (dominant), as #rrggbb'}, 'visible': {'type': 'boolean'}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}, 'spaces': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'entityCount', 'segmentCount', 'bounds', 'size'], 'properties': {'name': {'type': 'string', 'description': 'Pass as `space` to scope a describe or render to it'}, 'size': {'anyOf': [{'type': 'object', 'required': ['width', 'height'], 'properties': {'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'bounds': {'anyOf': [{'type': 'object', 'required': ['minX', 'minY', 'maxX', 'maxY'], 'properties': {'maxX': {'type': 'number'}, 'maxY': {'type': 'number'}, 'minX': {'type': 'number'}, 'minY': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'segmentCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'description': "Every space in the drawing (a PDF's pages, a DXF's model space and layouts), model space first. These do not sum to entityCount: a DXF sheet's viewports re-show model geometry, so an entity can be drawn in two spaces while existing once"}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'entityTypes': {'type': 'object', 'description': 'Top-level entities per DXF type', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'unsupported': {'type': 'object', 'description': 'Per-kind counts of what was skipped', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'segmentCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
describe_pdf
Describe a PDF drawing
Return a structured JSON summary of a PDF drawing — units (points), bounding box, layers, per-type entity counts, the text it contains, and what was skipped (images, shadings, transparency). Use this for structural questions about a PDF without rendering it. For a DXF use describe_dxf; if you do not know the format, use describe_doc. Covers the whole drawing by default, including every page of a multi-page PDF; pass `space` (a name from the reply's `spaces`) to scope it to one page or sheet. When the user wants to see or explore the drawing themselves, prefer view_dxf (interactive viewer) — if your platform gates it behind user approval, offer it and ask rather than substituting a static render.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source'], 'properties': {'space': {'type': 'string', 'description': 'Which space to work on: "Model" (a PDF\'s page 1, a DXF\'s model space) or a page/layout name as listed in a describe reply\'s "spaces". Describe omits it for the whole drawing; render defaults to the first space.'}, 'source': {'type': 'string', 'description': 'A publicly reachable http(s) URL, or inline DXF text. A PDF is binary, so it must be a URL — inline PDF bytes are refused. (This is a hosted server — local file paths are not available; use the npx @aspicio/mcp local server for files on disk.)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['format', 'units', 'bounds', 'size', 'space', 'entityCount', 'segmentCount', 'spaces', 'layers', 'entityTypes', 'unsupported', 'texts'], 'properties': {'size': {'anyOf': [{'type': 'object', 'required': ['width', 'height'], 'properties': {'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Bounding-box size in drawing units, null when empty'}, 'space': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Which space this summary is scoped to, or null when it covers the whole drawing (bounds/size then describe spaces[0], the space render returns)'}, 'texts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Unique TEXT/MTEXT strings, blocks included'}, 'units': {'type': 'string', 'description': 'Drawing-unit label (e.g. "mm"), "" when unitless'}, 'bounds': {'anyOf': [{'type': 'object', 'required': ['minX', 'minY', 'maxX', 'maxY'], 'properties': {'maxX': {'type': 'number'}, 'maxY': {'type': 'number'}, 'minX': {'type': 'number'}, 'minY': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'World-space extents, null for an empty drawing'}, 'format': {'type': 'string', 'description': 'Which format was read ("dxf", "pdf")'}, 'layers': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'entityCount', 'visible', 'color'], 'properties': {'name': {'type': 'string'}, 'color': {'type': 'string', 'description': 'The color actually drawn (dominant), as #rrggbb'}, 'visible': {'type': 'boolean'}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}, 'spaces': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'entityCount', 'segmentCount', 'bounds', 'size'], 'properties': {'name': {'type': 'string', 'description': 'Pass as `space` to scope a describe or render to it'}, 'size': {'anyOf': [{'type': 'object', 'required': ['width', 'height'], 'properties': {'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'bounds': {'anyOf': [{'type': 'object', 'required': ['minX', 'minY', 'maxX', 'maxY'], 'properties': {'maxX': {'type': 'number'}, 'maxY': {'type': 'number'}, 'minX': {'type': 'number'}, 'minY': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'segmentCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'description': "Every space in the drawing (a PDF's pages, a DXF's model space and layouts), model space first. These do not sum to entityCount: a DXF sheet's viewports re-show model geometry, so an entity can be drawn in two spaces while existing once"}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'entityTypes': {'type': 'object', 'description': 'Top-level entities per DXF type', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'unsupported': {'type': 'object', 'description': 'Per-kind counts of what was skipped', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'segmentCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
load_dxf_for_viewer
Load a DXF for the viewer widget
Internal: returns DXF bytes (base64) for the in-chat viewer. Called by the widget, not the model.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source'], 'properties': {'length': {'type': 'integer', 'maximum': 4000000, 'minimum': 1, 'description': 'Byte length of the requested range'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Byte offset of the requested range'}, 'source': {'type': 'string', 'description': 'http(s) URL of the drawing (same guards as the other tools)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bytesBase64', 'byteLength', 'offset'], 'properties': {'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Byte offset this slice starts at'}, 'byteLength': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Total size of the whole file'}, 'bytesBase64': {'type': 'string', 'description': 'The requested bytes, base64'}}, 'additionalProperties': False}
render_doc
Render a drawing of any supported format
Render a drawing in any supported format (DXF or PDF) to a PNG you can look at, detected from its bytes rather than its name. Use this when you do not know which format you have. Renders the first page/sheet by default; pass `space` (a name from a describe reply's `spaces`) to render another one. Some chat UIs do not display the returned image to the user: for URL sources the result also includes a direct image link — show it (e.g. as a markdown image) when they need to see the render. When the user wants to see or explore the drawing themselves, prefer view_dxf (interactive viewer) — if your platform gates it behind user approval, offer it and ask rather than substituting a static render.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source'], 'properties': {'space': {'type': 'string', 'description': 'Which space to work on: "Model" (a PDF\'s page 1, a DXF\'s model space) or a page/layout name as listed in a describe reply\'s "spaces". Describe omits it for the whole drawing; render defaults to the first space.'}, 'width': {'type': 'integer', 'maximum': 4000, 'minimum': 64, 'description': 'PNG width in pixels (default 1200)'}, 'source': {'type': 'string', 'description': 'A publicly reachable http(s) URL, or inline DXF text. A PDF is binary, so it must be a URL — inline PDF bytes are refused. (This is a hosted server — local file paths are not available; use the npx @aspicio/mcp local server for files on disk.)'}}}
render_dxf
Render a DXF to an image
Render a DXF drawing to a PNG image you can look at. Use this to answer visual questions (what does it look like, where is a feature, does it look right) — it returns an image, not text. For structural facts, prefer describe_dxf. For a PDF use render_pdf; if you do not know the format, use render_doc. Renders the first page/sheet by default; pass `space` (a name from a describe reply's `spaces`) to render another one. Some chat UIs do not display the returned image to the user: for URL sources the result also includes a direct image link — show it (e.g. as a markdown image) when they need to see the render. When the user wants to see or explore the drawing themselves, prefer view_dxf (interactive viewer) — if your platform gates it behind user approval, offer it and ask rather than substituting a static render.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source'], 'properties': {'space': {'type': 'string', 'description': 'Which space to work on: "Model" (a PDF\'s page 1, a DXF\'s model space) or a page/layout name as listed in a describe reply\'s "spaces". Describe omits it for the whole drawing; render defaults to the first space.'}, 'width': {'type': 'integer', 'maximum': 4000, 'minimum': 64, 'description': 'PNG width in pixels (default 1200)'}, 'source': {'type': 'string', 'description': 'A publicly reachable http(s) URL, or inline DXF text. A PDF is binary, so it must be a URL — inline PDF bytes are refused. (This is a hosted server — local file paths are not available; use the npx @aspicio/mcp local server for files on disk.)'}}}
render_pdf
Render a PDF to an image
Render a PDF drawing's vector content to a PNG you can look at. Images, shadings, and transparency are not drawn — they are reported by describe_pdf — so this shows line work and text, not a page facsimile. For a DXF use render_dxf; if you do not know the format, use render_doc. Renders the first page/sheet by default; pass `space` (a name from a describe reply's `spaces`) to render another one. Some chat UIs do not display the returned image to the user: for URL sources the result also includes a direct image link — show it (e.g. as a markdown image) when they need to see the render. When the user wants to see or explore the drawing themselves, prefer view_dxf (interactive viewer) — if your platform gates it behind user approval, offer it and ask rather than substituting a static render.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source'], 'properties': {'space': {'type': 'string', 'description': 'Which space to work on: "Model" (a PDF\'s page 1, a DXF\'s model space) or a page/layout name as listed in a describe reply\'s "spaces". Describe omits it for the whole drawing; render defaults to the first space.'}, 'width': {'type': 'integer', 'maximum': 4000, 'minimum': 64, 'description': 'PNG width in pixels (default 1200)'}, 'source': {'type': 'string', 'description': 'A publicly reachable http(s) URL, or inline DXF text. A PDF is binary, so it must be a URL — inline PDF bytes are refused. (This is a hosted server — local file paths are not available; use the npx @aspicio/mcp local server for files on disk.)'}}}
view_dxf
Open a drawing in the interactive viewer
Open an interactive viewer the user can pan, zoom, and toggle layers in (renders in-chat on MCP Apps-capable hosts). Reads DXF and vector PDF; for a PDF it shows line work and text rather than a page facsimile, so images, shadings, and transparency are absent by design. Use this when the user wants to see or explore the drawing themselves; for your own analysis use a describe_* tool (facts) or a render_* tool (image). The viewer shows only the drawing from this call. Delivery is handled by the widget itself: small drawings are embedded in the result and larger URL-sourced drawings are fetched by the widget through its own tool call — never re-fetch or inline the file for the viewer's sake, and don't blind-retry if the user reports an empty viewer (the viewer posts its actual status back to the conversation context).
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source'], 'properties': {'source': {'type': 'string', 'description': 'A publicly reachable http(s) URL, or inline DXF text. A PDF is binary, so it must be a URL — inline PDF bytes are refused. (This is a hosted server — local file paths are not available; use the npx @aspicio/mcp local server for files on disk.)'}, 'allow_file_open': {'type': 'boolean', 'description': 'Show open-file controls in the viewer (default false: viewer is locked to this drawing)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['format', 'units', 'bounds', 'size', 'space', 'entityCount', 'segmentCount', 'spaces', 'layers', 'entityTypes', 'unsupported', 'texts'], 'properties': {'size': {'anyOf': [{'type': 'object', 'required': ['width', 'height'], 'properties': {'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Bounding-box size in drawing units, null when empty'}, 'space': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Which space this summary is scoped to, or null when it covers the whole drawing (bounds/size then describe spaces[0], the space render returns)'}, 'texts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Unique TEXT/MTEXT strings, blocks included'}, 'units': {'type': 'string', 'description': 'Drawing-unit label (e.g. "mm"), "" when unitless'}, 'bounds': {'anyOf': [{'type': 'object', 'required': ['minX', 'minY', 'maxX', 'maxY'], 'properties': {'maxX': {'type': 'number'}, 'maxY': {'type': 'number'}, 'minX': {'type': 'number'}, 'minY': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'World-space extents, null for an empty drawing'}, 'format': {'type': 'string', 'description': 'Which format was read ("dxf", "pdf")'}, 'layers': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'entityCount', 'visible', 'color'], 'properties': {'name': {'type': 'string'}, 'color': {'type': 'string', 'description': 'The color actually drawn (dominant), as #rrggbb'}, 'visible': {'type': 'boolean'}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}, 'spaces': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'entityCount', 'segmentCount', 'bounds', 'size'], 'properties': {'name': {'type': 'string', 'description': 'Pass as `space` to scope a describe or render to it'}, 'size': {'anyOf': [{'type': 'object', 'required': ['width', 'height'], 'properties': {'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'bounds': {'anyOf': [{'type': 'object', 'required': ['minX', 'minY', 'maxX', 'maxY'], 'properties': {'maxX': {'type': 'number'}, 'maxY': {'type': 'number'}, 'minX': {'type': 'number'}, 'minY': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'segmentCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'description': "Every space in the drawing (a PDF's pages, a DXF's model space and layouts), model space first. These do not sum to entityCount: a DXF sheet's viewports re-show model geometry, so an entity can be drawn in two spaces while existing once"}, 'entityCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'entityTypes': {'type': 'object', 'description': 'Top-level entities per DXF type', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'unsupported': {'type': 'object', 'description': 'Per-kind counts of what was skipped', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'segmentCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
Added
load_dxf_for_viewer
Sept. 17, 2026, 12:41 p.m.
Added
view_dxf
Sept. 17, 2026, 12:41 p.m.
Added
render_doc
Sept. 17, 2026, 12:41 p.m.
Added
describe_doc
Sept. 17, 2026, 12:41 p.m.
Added
render_pdf
Sept. 17, 2026, 12:41 p.m.
Added
describe_pdf
Sept. 17, 2026, 12:41 p.m.
Added
render_dxf
Sept. 17, 2026, 12:41 p.m.
Added
describe_dxf
Sept. 17, 2026, 12:41 p.m.