{"ok":true,"site":{"host":"dnnsmnstrr.github.io","url":"https://dnnsmnstrr.github.io/connector-foundry/app/","type":"live","desc":"Pick a 3D-printable connector part, tweak its parameters, and export an STL — rendered in the browser with OpenSCAD.","tools":[{"name":"list_commands","kind":"answer","impl":"imperative","description":"Lists what can be done in Connector Foundry, a designer for 3D-printable connector parts, right now: the commands its command palette (Cmd/Ctrl+K) offers. They follow the tab in use (Library, Bench, Holes) and what is selected, so list again after a change. Without a query the everyday commands are listed; parts, hole types, camera views and guides are found with a query. A command marked \"opens\" leads to a list of choices (Grid step, Attach a part…): list those by passing its id in \"within\". Run a command with run_command.","title":"List commands","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Words to look for, as typed into the palette: \"download stl\", \"m3\", \"gridfinity bin\"."},"within":{"type":"array","items":{"type":"string"},"description":"Ids of the commands whose lists to open, outermost first: [\"bench.attach\"]."},"limit":{"type":"integer","minimum":1,"maximum":300,"description":"At most this many (100)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/connector-foundry/app/"},{"name":"run_command","kind":"act","impl":"imperative","description":"Runs one of the commands list_commands lists, as pressing Enter on it in the command palette would — or another of its actions, by title (\"Copy link\", \"Open in Bench\"). A command from a list of choices needs the same \"within\" it was listed with. Changes to a bench or holes can be undone by the user (Undo). The app updates once it has run: get_app_state shows the result.","title":"Run a command","annotations":{},"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The command's id, from list_commands."},"within":{"type":"array","items":{"type":"string"},"description":"The ids of the lists it is on, as passed to list_commands."},"action":{"type":"string","description":"Which of its actions, by title. The first one if left out."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/connector-foundry/app/"},{"name":"search_parts","kind":"answer","impl":"imperative","description":"Searches the catalogue of parts: connectors and accessories for Gridfinity, openGrid, Multiboard, Skådis and other systems. Each part comes with its parameters and their defaults, the values a parameter can take, and its named variants. Open one with open_part. Without a query, lists them all.","title":"Search the parts catalogue","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Words in the part's name, system or id: \"gridfinity bin\", \"opengrid board\"."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"At most this many (50)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/connector-foundry/app/"},{"name":"open_part","kind":"act","impl":"imperative","description":"Opens a catalogue part with the given parameters: in the Library to preview and download it, on the Bench as the base of a new assembly, or in Holes to drill holes into it. Parameters left out keep their defaults (search_parts lists them). Replacing a bench or placed holes asks the user first.","title":"Open a part","annotations":{},"inputSchema":{"type":"object","properties":{"partId":{"type":"string","description":"The part's id, from search_parts: \"gridfinity/bin\"."},"params":{"type":"object","description":"Parameter values by name: { \"gx\": 2, \"gy\": 3 }.","additionalProperties":true},"target":{"type":"string","enum":["library","bench","holes"],"description":"Which tab to open it in (library)."}},"required":["partId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/connector-foundry/app/"},{"name":"attach_part","kind":"act","impl":"imperative","description":"Attaches a catalogue part to an open slot on the Bench, as picking it in Attach a part… does: it starts with the parameters it would get there (a grid part sized to the surface, a part turned upright on a side face), and params given here go over those. get_app_state lists the open slots once the bench has rendered. A bench takes at most 3 attached parts. The user can undo it.","title":"Attach a part","annotations":{},"inputSchema":{"type":"object","properties":{"partId":{"type":"string","description":"The part's id, from search_parts: \"basics/plate\"."},"parentId":{"type":"string","description":"The node the slot is on, from get_app_state's openSlots (\"root\" if left out)."},"slotName":{"type":"string","description":"The slot, from get_app_state's openSlots: \"mount_0_0\"."},"params":{"type":"object","description":"Parameter values by name, over the ones it starts with.","additionalProperties":true},"joint":{"type":"string","enum":["fused","bolted","snap","pin","screwed"],"description":"How it joins the part below (fused)."}},"required":["partId","slotName"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/connector-foundry/app/"},{"name":"get_app_state","kind":"answer","impl":"imperative","description":"Says which tab is showing and what is on each: the Library's part and its parameters, the Bench's assembly as a bench config (the document load_bench takes), and the Holes tab's model and how many holes it has. Imported meshes' STL data is left out. preview is how the showing tab's render went: \"rendering\" until it lands, then \"done\", or \"error\" with the message — check it after a change, since a bad parameter or slot only shows there. On the Bench, openSlots lists where attach_part can put a part.","title":"Read the app's state","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/connector-foundry/app/"},{"name":"load_bench","kind":"act","impl":"imperative","description":"Replaces the Bench's assembly with a bench config and shows the Bench. Read the current one with get_app_state, change it (a part's params, a joint, a rotation), and pass the whole document back. An imported mesh may keep \"stl\": \"(left out)\" when it is on the bench now. To attach a part, use attach_part: which slots a part has depends on its rendered size. Joints: fused, bolted, snap, pin, screwed. The user can undo it.","title":"Load a bench","annotations":{},"inputSchema":{"type":"object","properties":{"config":{"type":"object","description":"A bench config: { \"format\": \"connector-foundry/bench\", \"version\": 1, \"root\", \"nodes\" }.","additionalProperties":true}},"required":["config"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/connector-foundry/app/"}],"category":"Developer Tools","favicon":"/favicons/dnnsmnstrr.github.io.svg","apiSurface":"spec","toolCount":7}}