{"id":220944,"recorded_at":"2026-10-26T15:03:35.442452Z","observed_at":"2026-10-26T15:03:35.442337Z","subject_kind":"endpoint","subject":"ddae2975-44b5-4a58-90b9-c72affcdc5ad","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":8,"tools":[{"description":"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.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"source":{"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.)","type":"string"},"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"],"type":"object"},"name":"describe_doc"},{"description":"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.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"source":{"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.)","type":"string"},"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"],"type":"object"},"name":"describe_dxf"},{"description":"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.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"source":{"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.)","type":"string"},"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"],"type":"object"},"name":"describe_pdf"},{"description":"Internal: returns DXF bytes (base64) for the in-chat viewer. Called by the widget, not the model.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"length":{"description":"Byte length of the requested range","maximum":4000000,"minimum":1,"type":"integer"},"offset":{"description":"Byte offset of the requested range","maximum":9007199254740991,"minimum":0,"type":"integer"},"source":{"description":"http(s) URL of the drawing (same guards as the other tools)","type":"string"}},"required":["source"],"type":"object"},"name":"load_dxf_for_viewer"},{"description":"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.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"source":{"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.)","type":"string"},"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"},"width":{"description":"PNG width in pixels (default 1200)","maximum":4000,"minimum":64,"type":"integer"}},"required":["source"],"type":"object"},"name":"render_doc"},{"description":"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.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"source":{"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.)","type":"string"},"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"},"width":{"description":"PNG width in pixels (default 1200)","maximum":4000,"minimum":64,"type":"integer"}},"required":["source"],"type":"object"},"name":"render_dxf"},{"description":"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.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"source":{"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.)","type":"string"},"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"},"width":{"description":"PNG width in pixels (default 1200)","maximum":4000,"minimum":64,"type":"integer"}},"required":["source"],"type":"object"},"name":"render_pdf"},{"description":"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).","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"allow_file_open":{"description":"Show open-file controls in the viewer (default false: viewer is locked to this drawing)","type":"boolean"},"source":{"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.)","type":"string"}},"required":["source"],"type":"object"},"name":"view_dxf"}]},"body_sha256":"aef3aa4241b5cf0b1302ee955cfd51f5e06f03db5fbaf79ad18e80b8d363ce05","prev_id":null,"leaf":"0xfb94cedf323a2212919db55d2c476f49d985a32457d55c63f31ad3e8e1163f5f","leaf_text":"{\"body\":\"aef3aa4241b5cf0b1302ee955cfd51f5e06f03db5fbaf79ad18e80b8d363ce05\",\"id\":220944,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793027015442337,\"prev\":null,\"subject\":\"ddae2975-44b5-4a58-90b9-c72affcdc5ad\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0xfb954b1f2ea2e87f40bb9f065e91b0cd138cbf01b4e93dd5dc5daf2a620bb7d8","0x20b98b212b3cec1b0c9a767465fbae4fe47784b5d483d6e3e1a91228b331dc76","0xfcc515c91f781599098caad19dad29a69867089fae4e601afbb81b05c72e2bc2","0x1e6fba550e07022ea64658953d4be5ba7e66c6fb7d56d3896ef4b50ff035eab9","0x764a134bf69c7376d88ca798d5193393b2985b28155cdaa08931315a4273649b","0xc66bc80c352ed984ac9f0735fd50d378af7506b249e7b367d60917cb189eb8b3","0x6abe85cf657d43ac3e52ccce851131e3ec2e15406c64de09e748b92335514699","0x70fd9ae9a03a791316b620492c5fdde2f830ab359262f4c723ef46b1f913f0bc","0x395a13a3442e9661e635085a1cd2cefe834428265c3f55a1ecf5d8707fc47162","0x5a686e4901521125a8b452665ac2984aa9cdf4a4bb0c87e06113a6fe84429ad2","0xcf10f42f956ec0f58e8d60fb00e23c6415064b00d70e8566efe0f1b98e7e1d0a","0xf8173f36b7a27e1bb0f6961a49501bba1d99349c5e11449d0d557fbaa910be0a","0xbee644d57738676bfb20eb90d6021f364bf883a8d54f8d17e9dc4749b4074c3d","0x44945ea9ad8b24e723ad5a8fd6d014024a49531783f74ff9229c2ab6930e84c8","0x68d296b1e00b4899fb83c3fba36fffaefa311eac2903067dbebfe776a12b4a9a","0x5fb5dda563336cd1bc1b9f44c52b76237ae72ed2145cb9290f39f304ca7dd678","0x74a0a08e4e7ab9aa5bfbead33dec7e1c7e8e364cff69a63720d764bbe987aadc"]}