Aspicio

DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.

我该使用它吗

质量与安全性

B
描述质量
100%
模式完整度
100%
命名质量
90%
投毒风险
40%
权限匹配度
100%
协议合规性
100%

发现(4)

  • HIGHTool poisoning patterns detected
  • LOWTool description contains role marker that could confuse chat models在 render_dxf 中
  • LOWTool description contains role marker that could confuse chat models在 render_pdf 中
  • LOWTool description contains role marker that could confuse chat models在 render_doc 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~5,989token 数(工具定义)
~6.9 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 4.68%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "aspicio": {
      "command": "npx",
      "args": [
        "@aspicio/mcp"
      ]
    }
  }
}

可运行的软件包

npm@aspicio/mcp0.13.0stdio

远程端点

https://aspicio-api.frontsail.app/mcpstreamable-http
https://aspicio-api.dmitri-66a.workers.dev/mcpstreamable-http

它能做什么

工具清单

工具(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.

输入模式

{
  "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#"
}

输出模式

{
  "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.

输入模式

{
  "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.

输入模式

{
  "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#"
}

输出模式

{
  "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.

输入模式

{
  "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.

输入模式

{
  "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#"
}

输出模式

{
  "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.

输入模式

{
  "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).

输入模式

{
  "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#"
}

输出模式

{
  "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.

输入模式

{
  "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#"
}

输出模式

{
  "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
}

社区

评价此服务器

证据

最近观测

已验证未记录版本8 个工具
已验证未记录版本4 个工具
已验证未记录版本8 个工具
已验证未记录版本4 个工具
已验证未记录版本8 个工具
已验证未记录版本4 个工具