Aspicio
DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.
Should I use this
Quality & Safety
Findings (4)
- HIGH
- LOWin render_dxf
- LOWin render_pdf
- LOWin render_doc
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"aspicio": {
"command": "npx",
"args": [
"@aspicio/mcp"
]
}
}
}Runnable packages
0.13.0stdioRemote endpoints
https://aspicio-api.frontsail.app/mcpstreamable-httphttps://aspicio-api.dmitri-66a.workers.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (8)
🟢describe_dxf(source, space)
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.
Input Schema
{
"type": "object",
"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.)"
},
"space": {
"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.",
"type": "string"
}
},
"required": [
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"format": {
"type": "string",
"description": "Which format was read (\"dxf\", \"pdf\")"
},
"units": {
"type": "string",
"description": "Drawing-unit label (e.g. \"mm\"), \"\" when unitless"
},
"bounds": {
"anyOf": [
{
"type": "object",
"properties": {
"minX": {
"type": "number"
},
"minY": {
"type": "number"
},
"maxX": {
"type": "number"
},
"maxY": {
"type": "number"
}
},
"required": [
"minX",
"minY",
"maxX",
"maxY"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "World-space extents, null for an empty drawing"
},
"size": {
"anyOf": [
{
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"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)"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"segmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"spaces": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Pass as `space` to scope a describe or render to it"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"segmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"bounds": {
"anyOf": [
{
"type": "object",
"properties": {
"minX": {
"type": "number"
},
"minY": {
"type": "number"
},
"maxX": {
"type": "number"
},
"maxY": {
"type": "number"
}
},
"required": [
"minX",
"minY",
"maxX",
"maxY"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"size": {
"anyOf": [
{
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"entityCount",
"segmentCount",
"bounds",
"size"
],
"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"
},
"layers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"visible": {
"type": "boolean"
},
"color": {
"type": "string",
"description": "The color actually drawn (dominant), as #rrggbb"
}
},
"required": [
"name",
"entityCount",
"visible",
"color"
],
"additionalProperties": false
}
},
"entityTypes": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "Top-level entities per DXF type"
},
"unsupported": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "Per-kind counts of what was skipped"
},
"texts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Unique TEXT/MTEXT strings, blocks included"
}
},
"required": [
"format",
"units",
"bounds",
"size",
"space",
"entityCount",
"segmentCount",
"spaces",
"layers",
"entityTypes",
"unsupported",
"texts"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢render_dxf(source, width, space)
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.
Input Schema
{
"type": "object",
"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.)"
},
"width": {
"description": "PNG width in pixels (default 1200)",
"type": "integer",
"minimum": 64,
"maximum": 4000
},
"space": {
"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.",
"type": "string"
}
},
"required": [
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢describe_pdf(source, space)
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.
Input Schema
{
"type": "object",
"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.)"
},
"space": {
"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.",
"type": "string"
}
},
"required": [
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"format": {
"type": "string",
"description": "Which format was read (\"dxf\", \"pdf\")"
},
"units": {
"type": "string",
"description": "Drawing-unit label (e.g. \"mm\"), \"\" when unitless"
},
"bounds": {
"anyOf": [
{
"type": "object",
"properties": {
"minX": {
"type": "number"
},
"minY": {
"type": "number"
},
"maxX": {
"type": "number"
},
"maxY": {
"type": "number"
}
},
"required": [
"minX",
"minY",
"maxX",
"maxY"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "World-space extents, null for an empty drawing"
},
"size": {
"anyOf": [
{
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"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)"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"segmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"spaces": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Pass as `space` to scope a describe or render to it"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"segmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"bounds": {
"anyOf": [
{
"type": "object",
"properties": {
"minX": {
"type": "number"
},
"minY": {
"type": "number"
},
"maxX": {
"type": "number"
},
"maxY": {
"type": "number"
}
},
"required": [
"minX",
"minY",
"maxX",
"maxY"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"size": {
"anyOf": [
{
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"entityCount",
"segmentCount",
"bounds",
"size"
],
"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"
},
"layers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"visible": {
"type": "boolean"
},
"color": {
"type": "string",
"description": "The color actually drawn (dominant), as #rrggbb"
}
},
"required": [
"name",
"entityCount",
"visible",
"color"
],
"additionalProperties": false
}
},
"entityTypes": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "Top-level entities per DXF type"
},
"unsupported": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "Per-kind counts of what was skipped"
},
"texts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Unique TEXT/MTEXT strings, blocks included"
}
},
"required": [
"format",
"units",
"bounds",
"size",
"space",
"entityCount",
"segmentCount",
"spaces",
"layers",
"entityTypes",
"unsupported",
"texts"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢render_pdf(source, width, space)
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.
Input Schema
{
"type": "object",
"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.)"
},
"width": {
"description": "PNG width in pixels (default 1200)",
"type": "integer",
"minimum": 64,
"maximum": 4000
},
"space": {
"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.",
"type": "string"
}
},
"required": [
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢describe_doc(source, space)
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.
Input Schema
{
"type": "object",
"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.)"
},
"space": {
"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.",
"type": "string"
}
},
"required": [
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"format": {
"type": "string",
"description": "Which format was read (\"dxf\", \"pdf\")"
},
"units": {
"type": "string",
"description": "Drawing-unit label (e.g. \"mm\"), \"\" when unitless"
},
"bounds": {
"anyOf": [
{
"type": "object",
"properties": {
"minX": {
"type": "number"
},
"minY": {
"type": "number"
},
"maxX": {
"type": "number"
},
"maxY": {
"type": "number"
}
},
"required": [
"minX",
"minY",
"maxX",
"maxY"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "World-space extents, null for an empty drawing"
},
"size": {
"anyOf": [
{
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"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)"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"segmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"spaces": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Pass as `space` to scope a describe or render to it"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"segmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"bounds": {
"anyOf": [
{
"type": "object",
"properties": {
"minX": {
"type": "number"
},
"minY": {
"type": "number"
},
"maxX": {
"type": "number"
},
"maxY": {
"type": "number"
}
},
"required": [
"minX",
"minY",
"maxX",
"maxY"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"size": {
"anyOf": [
{
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"entityCount",
"segmentCount",
"bounds",
"size"
],
"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"
},
"layers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"visible": {
"type": "boolean"
},
"color": {
"type": "string",
"description": "The color actually drawn (dominant), as #rrggbb"
}
},
"required": [
"name",
"entityCount",
"visible",
"color"
],
"additionalProperties": false
}
},
"entityTypes": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "Top-level entities per DXF type"
},
"unsupported": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "Per-kind counts of what was skipped"
},
"texts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Unique TEXT/MTEXT strings, blocks included"
}
},
"required": [
"format",
"units",
"bounds",
"size",
"space",
"entityCount",
"segmentCount",
"spaces",
"layers",
"entityTypes",
"unsupported",
"texts"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢render_doc(source, width, space)
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.
Input Schema
{
"type": "object",
"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.)"
},
"width": {
"description": "PNG width in pixels (default 1200)",
"type": "integer",
"minimum": 64,
"maximum": 4000
},
"space": {
"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.",
"type": "string"
}
},
"required": [
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢view_dxf(source, allow_file_open)
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).
Input Schema
{
"type": "object",
"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": {
"description": "Show open-file controls in the viewer (default false: viewer is locked to this drawing)",
"type": "boolean"
}
},
"required": [
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"format": {
"type": "string",
"description": "Which format was read (\"dxf\", \"pdf\")"
},
"units": {
"type": "string",
"description": "Drawing-unit label (e.g. \"mm\"), \"\" when unitless"
},
"bounds": {
"anyOf": [
{
"type": "object",
"properties": {
"minX": {
"type": "number"
},
"minY": {
"type": "number"
},
"maxX": {
"type": "number"
},
"maxY": {
"type": "number"
}
},
"required": [
"minX",
"minY",
"maxX",
"maxY"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "World-space extents, null for an empty drawing"
},
"size": {
"anyOf": [
{
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"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)"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"segmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"spaces": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Pass as `space` to scope a describe or render to it"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"segmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"bounds": {
"anyOf": [
{
"type": "object",
"properties": {
"minX": {
"type": "number"
},
"minY": {
"type": "number"
},
"maxX": {
"type": "number"
},
"maxY": {
"type": "number"
}
},
"required": [
"minX",
"minY",
"maxX",
"maxY"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"size": {
"anyOf": [
{
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"entityCount",
"segmentCount",
"bounds",
"size"
],
"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"
},
"layers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"entityCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"visible": {
"type": "boolean"
},
"color": {
"type": "string",
"description": "The color actually drawn (dominant), as #rrggbb"
}
},
"required": [
"name",
"entityCount",
"visible",
"color"
],
"additionalProperties": false
}
},
"entityTypes": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "Top-level entities per DXF type"
},
"unsupported": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "Per-kind counts of what was skipped"
},
"texts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Unique TEXT/MTEXT strings, blocks included"
}
},
"required": [
"format",
"units",
"bounds",
"size",
"space",
"entityCount",
"segmentCount",
"spaces",
"layers",
"entityTypes",
"unsupported",
"texts"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢load_dxf_for_viewer(source, offset, length)
Internal: returns DXF bytes (base64) for the in-chat viewer. Called by the widget, not the model.
Input Schema
{
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "http(s) URL of the drawing (same guards as the other tools)"
},
"offset": {
"description": "Byte offset of the requested range",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"length": {
"description": "Byte length of the requested range",
"type": "integer",
"minimum": 1,
"maximum": 4000000
}
},
"required": [
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"bytesBase64": {
"type": "string",
"description": "The requested bytes, base64"
},
"byteLength": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Total size of the whole file"
},
"offset": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Byte offset this slice starts at"
}
},
"required": [
"bytesBase64",
"byteLength",
"offset"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Community
Evidence