addrbookFor publishers
← The evidence ledger

Evidence row 297663

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint fefbac61-9629-4118-b2ea-a4e9254d0d90
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
f62cf49ee7f025fc49c170b6162ce7f3d0f155c3ee2dedce08f8301b468864cb
Leaf
0x6b7b6cf146ed2d9ab97ced1bbdb1c983751bc2040a3b2d0298e631294da961fa

What was observed

{
  "count": 16,
  "tools": [
    {
      "description": "Convert filament grams to metres (and back), compute volume and cost, and estimate how much is left on a spool from its gross weight. Knows densities for PLA, PETG, ABS, ASA, TPU, Nylon, PC, CF blends. Give either `grams` or `meters`.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "density_g_cm3": {
            "description": "Override density if known.",
            "type": "number"
          },
          "diameter_mm": {
            "default": 1.75,
            "type": "number"
          },
          "empty_spool_weight_grams": {
            "description": "Weight of the empty spool (typ. 130–250 g).",
            "type": "number"
          },
          "grams": {
            "type": "number"
          },
          "material": {
            "default": "pla",
            "description": "pla, petg, abs, asa, tpu, nylon, pc, pla-cf, petg-cf, pa-cf …",
            "type": "string"
          },
          "meters": {
            "type": "number"
          },
          "spool_gross_weight_grams": {
            "description": "Weight of spool + remaining filament, to estimate what is left.",
            "type": "number"
          },
          "spool_price_usd": {
            "type": "number"
          },
          "spool_weight_kg": {
            "default": 1,
            "type": "number"
          }
        },
        "type": "object"
      },
      "name": "calculate_filament_usage"
    },
    {
      "description": "Compute the Z-axis \"magic number\" layer heights for a printer from its stepper step angle, microstepping and lead-screw pitch/starts, filtered to what suits the nozzle. Defaults match most Ender/Prusa-style printers (1.8°, 1/16, T8 2 mm × 4 starts → 0.04 mm steps).",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "lead_screw_pitch_mm": {
            "default": 2,
            "type": "number"
          },
          "lead_screw_starts": {
            "default": 4,
            "type": "integer"
          },
          "max_layer_height_mm": {
            "type": "number"
          },
          "microstepping": {
            "default": 16,
            "type": "integer"
          },
          "nozzle_diameter_mm": {
            "default": 0.4,
            "type": "number"
          },
          "step_angle_degrees": {
            "default": 1.8,
            "type": "number"
          }
        },
        "type": "object"
      },
      "name": "calculate_layer_heights"
    },
    {
      "description": "Estimate what an FDM print costs (material, electricity, machine wear, labor, failure allowance) and a suggested selling price. Needs the print weight in grams and time in hours from the slicer; all other inputs have sensible defaults (1 kg spool at $20, 120 W printer, $0.12/kWh, 5% failures).",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "electricity_cost_per_kwh": {
            "default": 0.12,
            "type": "number"
          },
          "failure_rate_percent": {
            "default": 5,
            "type": "number"
          },
          "labor_minutes": {
            "default": 0,
            "description": "Hands-on time: slicing, removal, post-processing.",
            "type": "number"
          },
          "labor_rate_per_hour": {
            "default": 0,
            "type": "number"
          },
          "markup_percent": {
            "default": 0,
            "description": "Profit markup to compute a selling price.",
            "type": "number"
          },
          "print_time_hours": {
            "description": "Print time in hours (e.g. 3.5).",
            "type": "number"
          },
          "print_weight_grams": {
            "description": "Filament used, from the slicer.",
            "type": "number"
          },
          "printer_cost_usd": {
            "default": 0,
            "description": "Printer purchase price, for depreciation. 0 to skip.",
            "type": "number"
          },
          "printer_lifespan_hours": {
            "default": 5000,
            "type": "number"
          },
          "printer_power_watts": {
            "default": 120,
            "type": "number"
          },
          "quantity": {
            "default": 1,
            "type": "integer"
          },
          "spool_price_usd": {
            "default": 20,
            "type": "number"
          },
          "spool_weight_kg": {
            "default": 1,
            "type": "number"
          }
        },
        "required": [
          "print_weight_grams",
          "print_time_hours"
        ],
        "type": "object"
      },
      "name": "calculate_print_cost"
    },
    {
      "description": "Check whether a hotend can keep up: volumetric flow (mm³/s) = layer height × line width × speed, compared against the hotend limit, plus the maximum safe speed. Accepts a hotend preset name (stock, v6, bambu, volcano, rapido, high-flow, goliath…) or an explicit max flow.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "hotend": {
            "description": "Preset: stock, v6, ender3, prusa-mk3, prusa-mk4, bambu, volcano, rapido, dragon-hf, high-flow, chc-pro, goliath, voron",
            "type": "string"
          },
          "layer_height_mm": {
            "default": 0.2,
            "type": "number"
          },
          "line_width_mm": {
            "default": 0.42,
            "type": "number"
          },
          "max_volumetric_flow_mm3_s": {
            "type": "number"
          },
          "print_speed_mm_s": {
            "type": "number"
          }
        },
        "required": [
          "print_speed_mm_s"
        ],
        "type": "object"
      },
      "name": "calculate_volumetric_flow"
    },
    {
      "description": "Poll a PrintPal AI generation started with `generate_3d_model` in API-key mode. Returns status (queued/processing/completed/failed) and, when completed, a time-limited download URL for the mesh.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "generation_uid": {
            "type": "string"
          }
        },
        "required": [
          "generation_uid"
        ],
        "type": "object"
      },
      "name": "check_3d_generation"
    },
    {
      "description": "For mechanical / functional parts with exact dimensions — brackets, enclosures, adapters, gears, bins, knobs, mounts — open PrintPal's AI CAD agent with a ready-to-run brief. The agent writes editable OpenSCAD with parameter sliders, live 3D preview and STL/3MF/STEP export. This tool improves the user's description into a precise CAD brief (dimensions, tolerances, mounting, print orientation) and returns the link; the user clicks it to generate.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "description": "What the part is and what it must fit/do.",
            "type": "string"
          },
          "dimensions": {
            "description": "Known dimensions in mm, e.g. \"60 x 40 x 20 mm, M3 holes 50 mm apart\".",
            "type": "string"
          },
          "export_format": {
            "default": "stl",
            "enum": [
              "stl",
              "3mf",
              "step",
              "scad"
            ],
            "type": "string"
          },
          "material": {
            "description": "Intended filament (affects tolerances), e.g. PLA, PETG, TPU.",
            "type": "string"
          }
        },
        "required": [
          "description"
        ],
        "type": "object"
      },
      "name": "design_parametric_cad"
    },
    {
      "description": "Fetch the full content of a PrintPal item returned by `search` (or any id of the form `model:<uid>`, `tool:<slug>`, `wiki:<slug>`, `doc:<slug>`, `resource:<slug>`, `project:<slug>`, `course:<slug>`). Returns the complete text (article body, transcript, build steps, BOM, model description and files) plus the canonical URL for citation.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "Item id from `search`, e.g. \"wiki:stringing-and-oozing\".",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "fetch"
    },
    {
      "description": "Recommend the right free PrintPal browser tool for a task: print cost / resin cost / layer height (magic numbers) / E-steps / flow rate / volumetric flow / filament spool / drying / shrinkage / Vref / Etsy profit calculators; generators for lithophanes, vases, name plates, 3D text, QR codes, bins, puzzles, mold boxes, flexi models, fidget clickers, Desk Pal, terrain maps, Minecraft maps; mesh repair, model splitter, converter, viewer, G-code viewer, AMS/multicolor painters; AI generators. Returns matching tools with links. Pass an empty task to list every tool.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "default": 6,
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "task": {
            "description": "What the user is trying to do, e.g. \"split a big model to fit my bed\".",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "find_3d_printing_tool"
    },
    {
      "description": "Turn a text prompt or an image into a print-ready 3D mesh (STL/GLB/OBJ geometry) with PrintPal's AI generator. Without a PrintPal API key this returns a link that opens the generator on printpal.io with the prompt prefilled; nothing is generated until the user clicks it. With an API key header (`Authorization: Bearer pp_live_…`) it submits the job to the user's own account, spends that account's credits, and returns a `generation_uid` that `check_3d_generation` accepts. Suited to organic/sculptural objects (figurines, animals, props); exact-dimension mechanical parts are handled by `design_parametric_cad`.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "format": {
            "default": "glb",
            "enum": [
              "glb",
              "stl",
              "obj",
              "ply",
              "fbx"
            ],
            "type": "string"
          },
          "image_url": {
            "description": "Optional public PNG/JPEG/WebP URL for image-to-3D (API-key mode only).",
            "type": "string"
          },
          "prompt": {
            "description": "What to generate, e.g. \"low-poly fox figurine, sitting\".",
            "type": "string"
          },
          "quality": {
            "default": "default",
            "description": "default/high/ultra for text or image; super*/superplus* tiers are image-only high-res.",
            "enum": [
              "default",
              "high",
              "ultra",
              "super",
              "super_texture",
              "superplus",
              "superplus_texture",
              "superplus_1280",
              "superplus_1280_texture",
              "superplus_1536",
              "superplus_1536_texture"
            ],
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ],
        "type": "object"
      },
      "name": "generate_3d_model"
    },
    {
      "description": "Get full details for one PrintPal model by uid: description, license, file formats, author, stats, and the page URL to download it. Accepts a uid from `search_3d_models` results or a printpal.io/model/<uid> URL.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "uid": {
            "description": "Model uid from search results or a printpal.io/model/<uid> URL.",
            "type": "string"
          }
        },
        "required": [
          "uid"
        ],
        "type": "object"
      },
      "name": "get_3d_model"
    },
    {
      "description": "Read a full PrintPal build guide by slug: summary, bill of materials with quantities and links, downloadable files (STL/3MF/code), every build step, callouts and code blocks. Use when the user wants to actually follow or adapt a project.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "description": "Project slug from search results or a printpal.io/projects/<slug> URL.",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_build_guide"
    },
    {
      "description": "Explain what is free on PrintPal, how AI generation credits and the CAD agent are priced, API access and the on-demand 3D printing service — with links to sign up, buy credits or subscribe. Call when the user asks about cost, limits, subscriptions or how to get more generations.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_pricing_and_plans"
    },
    {
      "description": "Search everything on PrintPal for a 3D-printing query: community 3D models, free tools and calculators, wiki troubleshooting articles, OpenSCAD/AI-CAD docs, video tutorials, build guides and Academy courses. Returns ids accepted by `fetch` for the full content. Suited to general 3D printing questions such as \"why is my first layer not sticking\", \"PETG temperature\" or \"3D printed phone stand\".",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "query": {
            "description": "Natural-language search query.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search"
    },
    {
      "description": "Find printable 3D models (STL/3MF/OBJ) in the PrintPal community library by keyword — e.g. \"articulated dragon\", \"headphone stand\", \"Raspberry Pi 5 case\". Returns cards with thumbnail, author, tags, likes and a link to the model page where the files can be downloaded. Searches existing uploads only; new models are made by `generate_3d_model` (AI mesh) or `design_parametric_cad` (exact dimensions).",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "category": {
            "description": "Optional category filter.",
            "enum": [
              "Art",
              "Fashion",
              "Gadgets",
              "Hobby",
              "Household",
              "Learning",
              "Miniatures",
              "Tools",
              "Toys & Games",
              "Other"
            ],
            "type": "string"
          },
          "limit": {
            "default": 12,
            "maximum": 30,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "description": "What the user wants to print, 1–6 words works best.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_3d_models"
    },
    {
      "description": "Find step-by-step PrintPal build guides: Arduino/ESP32 electronics + 3D-printed enclosures, robots, functional prints, printer mods, STEM classroom projects, props and toys. Each result lists difficulty, time, cost, part/file/step counts. Filter by category (electronics-robotics, functional-prints, home-workshop, stem-education, printer-mods, art-props, toys-games) or difficulty (beginner, intermediate, advanced). Leave query empty to browse featured guides.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "category": {
            "description": "Category slug or name.",
            "type": "string"
          },
          "difficulty": {
            "enum": [
              "beginner",
              "intermediate",
              "advanced"
            ],
            "type": "string"
          },
          "limit": {
            "default": 8,
            "maximum": 25,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "type": "string"
          },
          "sort": {
            "default": "featured",
            "enum": [
              "featured",
              "recent",
              "popular",
              "liked"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "search_build_guides"
    },
    {
      "description": "Search PrintPal's how-to content: the vendor-neutral 3D printing wiki (print quality, filaments, slicer settings, maintenance, error codes, safety), OpenSCAD + AI-CAD docs, short video tutorials with transcripts, and free Academy courses with certificates. Use `type` to narrow. Results include ids accepted by `fetch` for the full article text.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "default": 8,
            "maximum": 25,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "type": "string"
          },
          "type": {
            "default": "all",
            "enum": [
              "all",
              "wiki",
              "docs",
              "videos",
              "courses"
            ],
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_learning_resources"
    }
  ]
}

What the leaf hashes

{"body":"f62cf49ee7f025fc49c170b6162ce7f3d0f155c3ee2dedce08f8301b468864cb","id":297663,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793052285377804,"prev":null,"subject":"fefbac61-9629-4118-b2ea-a4e9254d0d90","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0x6b7b3f8deb27e441c986fdc9a5b4755b01d8e8652ff4171af2df732e02ce2658
  2. 0x01498fc2a6c34dac01af46345116cf06f59ed775107fa4c6d0cb520ee999fd80
  3. 0x9b80cff334fd18b7932b75da5d1c1fc54d7a13dc910e7693ac3b4194ed7d4de8
  4. 0xea4f0333a390c7acceff0b628020831a63e32fa79326296e66df838251e8cc93
  5. 0xc6e965e877c87fd84be7fe0faccc4637d970b152be795006445514820ec722b1
  6. 0xc8c97922123f7cc31a364c1f4f5aa9589dad6e246712747ba27aa87ddc719378
  7. 0x1a507ea3a755d086d5887bbfe6867fbbed9e8212fe98fe5a8856cf77e1484eae
  8. 0x966c3b8dfcaf31f7df801a208e54f3d1a19321c3195baadb1d7014d4eb4c2396
  9. 0x959ad25eceb864e98140a3c5d86b87e2e87047d2132bf498fed758e10dc5218e
  10. 0x87894636102384a23857842def741b3253d54af0afaff0b11e7117549ccd8002
  11. 0xdfaea4285192101e7ab6e8e71853c71cef08df31a416be7a9f92f34cf897e13e
  12. 0x2a304c51963b65e3ca818b638b2e9a98297b7d6b6a3e14ecca2501aa13b9f556
  13. 0x9dc4d6f64bc3c323d2c45a28209068cd473b6979bd632a0d694bf94d19bc39df
  14. 0xfc9b5a81a7a83a1c735a4fe64590beb9db14d2366f463161358af28c3ea9a81d
  15. 0xa2d436d488e3600b0e5c3e3ed9c9234cd52853c59830b786334fd0c4292d9f40
  16. 0x47b89901b0f07938a6b9a66ddf35683903f79d756a7c7763665fd632758b08d0
  17. 0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON